У меня есть две таблицы, которые могут быть соединены с помощью одного поля:Выбор строк, которые не существуют при объединении двух таблиц
Table_1:
emp_id emp_name department
------ -------- ----------
1 Adam Accounting
2 Peter Engineering
3 Bruce Engineering
Table_2:
emp_id emp_salary
------ ----------
1 1000
3 3500
5 2000
Я хочу, чтобы выбрать строки в таблице 2, которые не появляются при вступлении в две таблицы (в этом примере emp_id = 5). Я пытался следующее заявление, но я получаю 0 строк:
select * from table_2
where not exists
(
select * from table_1, table_2
where table_1.emp_id = table_2.emp_id);
Между двумя утверждениями нет никакой связи; ваше предложение EXISTS всегда будет возвращать что-то, пока есть один идентификатор, который находится в обеих таблицах ... другими словами, это всегда верно, и вам нужно связать 'table_2' с вашим предложением EXISTS. Это должно помочь вам увидеть, что вам нужен только список идентификаторов в 'table_2', которые не существуют в' table_1', что является более простым предложением. – Ben
Вместо этого вы должны использовать внутреннее соединение. – Xravn
Это внутреннее соединение @ sra1. – Ben