SQL Получить строки, которые не отображаются в другой таблице

У меня проблема SQL: у меня есть таблицы A и B. В таблице A есть столбцы id и name , amount таблиц B и id которые являются внешним ключом таблицы A.id

Мне нужно вернуть все строки таблицы A, чей идентификатор не хранится в таблице B. Есть идеи?

Итак, полная противоположность:

SELECT *
FROM a
LEFT OUTER JOIN b ON a.id = b.id;

Здесь строка, что мне нужно, остается вне результата

Всего 1 ответ


Просто добавьте предложение where :

SELECT a.*
FROM a LEFT OUTER JOIN
     b
     ON a.id = b.id
WHERE b.id IS NULL;

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

select a.*
from a
where not exists (select 1 from b where b.id = a.id);

В большинстве баз данных оба метода обычно имеют одинаковую производительность.


Есть идеи?

10000