Как сравнить два столбца из другой таблицы и дифференцировать в MySQL? - PullRequest
0 голосов
/ 07 января 2019

Я сравниваю две таблицы с одним и тем же столбцом, но с учетом разницы.

Например,

table1

id  roll    no 
1   123456  same-ignore
2   123457  different
3   123458  same-ignore
4   123879  different
5   123888  same-ignore

table2

id  roll    no 
1   123456  same-ignore
2   123467  different
3   123458  same-ignore
4   123852  different
5   123888  same-ignore

Я следовал нижеприведенным примерам, но результат не достигнут.

SQL как сравнить два столбца из двух разных таблиц
сравнение столбцов в двух разных таблицах
Сравнение двух столбцов в двух разных таблицах?
Сравнить столбец в двух разных таблицах

Я получил первый вывод с этим запросом.

select distinct roll no from table2 where rollno not in (select roll no from table1)

Я не могу сделать то же самое для второго вывода, то есть я не могу дифференцировать table1 с table2 (он возвращает нулевые строки)

Как мне достичь?

вывод 1: (не в таблице 1)

123467
123852

вывод 2: (не в таблице2)

123457
123879

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Если вы хотите получить броски из table1, которых нет в table2, вы можете пойти с этим

SELECT roll FROM table1
WHERE roll NOT IN 
(
    SELECT DISTINCT roll FROM table2
);

UNION

SELECT roll FROM table2
WHERE roll NOT IN 
(
    SELECT DISTINCT roll FROM table1
);

Если вместо этого вы ищете несоответствующие пары бросков между строками (сначала с первым, затем со вторым, ...), вы можете использовать простое JOIN:

SELECT t1.roll 
FROM table1 t1 JOIN table2 t2 ON t1.id == t2.id
WHERE t1.roll <> t2.roll
0 голосов
/ 07 января 2019

используйте левое и правое соединение для выхода 1

select t2.roll from table1 t1 
  right
 join table2 t2 on t1.roll=t2.roll
where t1.roll is null 

для выхода 2

select t1.roll from table1 t1 
  left
 join table2 t2 on t1.roll=t2.roll
where t2.roll is null 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...