2015-04-08 3 views
0

таблицу 1:У меня есть две таблицы только выяснить несоответствие ID

id 
1 
2 
3 
5 
6 

Таблица 2:

id 
2 
3 
7 

Я хочу только несовпадение id из таблицы 1, как мой результат должен быть 1,5,6.

Пожалуйста, помогите, пожалуйста, заранее.

+0

вы должны использовать только 'НЕ в' подзапрос. Пожалуйста, см. Мой ответ и спросите, нужно ли ему больше разъяснений. –

+0

Рекомендуется не использовать NOT EXISTS вместо NOT IN, так как NOT EXISTS «null safe». – jarlh

ответ

0

Попробуйте это:

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2) 
+0

запрос должен быть 'NOT IN' и ** not **' NOT id IN' –

+0

Из-за соглашения? Он также работает с NOT id IN ... – Plasher

+0

Я не пробовал это в любое время раньше. Лично я чувствую, что читаемость запроса уменьшается. –

0

Вы можете использовать NOT IN

select id from table1 where id not in (select id from table2) 
0

Это должно работать на MySQL:

SELECT id FROM table1 LEFT JOIN table2 ON table1.id = table2.id WHERE NOT ISNULL(table2.id) 

На MSSQL вы можете использовать «table2.id IS NOT NULL "вместо" NOT ISNULL (table2.id) "конструкция

+0

ISNULL является специфичным для продукта, и вопрос не содержит указанных dbms. По крайней мере, укажите, для какого ISNULL. – jarlh

+0

Хорошо, я отредактировал ответ, чтобы описать dbms, спасибо. – Cristik

0
SELECT ID1 

FROM TABLE_1 

WHERE ID1 NOT IN(SELECT ID2 FROM TABLE_2); 

Вам нужно просто использовать предложение NOT IN в состоянии WHERE, который будет возвращать вам уникальные идентификаторы соответствия в TABLE_1

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