2017-02-16 2 views
0

У меня есть две большие таблицы с более чем 10-мильными записями в каждом. Я пытаюсь выяснить, какие значения отсутствуют в одной из таблиц. В таблице имеют одинаковую схему и посмотреть, как этотСравнение нескольких строк в двух больших таблицах

Table1

| ColA  | ColB  | ColC   | 
|:-----------|------------:|:------------:| 
| John  | Steve  | Richardson | 
| Steve  | Richard  | Johnson  | 
| Will  | Jack  | Jackson  | 

Table2

| ColA  | ColB  | ColC   | 
|:-----------|------------:|:------------:| 
| John  | Steve  | Richardson | 
| Will  | Jack  | Jackson  | 

Я ищу для записи Steve Richard Johnson

Я попытался следующие запрос, но он не работает

SELECT * 
FROM `Table1` AS a 
WHERE NOT EXISTS 
(SELECT * FROM `Table2` AS b WHERE 
`a`.`ColA` = `b`.`ColA` AND `a`.`ColB` = `b`.`ColB` AND `a`.`ColC` = `b`.`ColC`) 
+0

Вас интересуют, какие строки отсутствуют table2 только, или же какие строки присутствуют в таблице 2, но отсутствует в таблице 1 – Strawberry

+0

@Strawberry Меня интересуют только те строки, которые отсутствуют в таблице2 –

ответ

2

Нанести левое соединение с table2 от t1, чтобы получить нон совпадающей строки, как показано ниже

select t1.* 
from table1 t1 
left join Table2 t2 on t1.col1A = t2.colA and t1.colB = t2.colB and t1.colC = t2.colC 
where t2.colA is null and t2.cOlB is null and t2.colC is null 
+0

Вам нужно всего лишь проверить, что один из столбцов в t2 равен нулю – Bohemian

+0

Тайм-аут запроса заканчивается, хотя есть индексы на ColA, ColB и ColC –

Смежные вопросы