Используйте NOT EXISTS с сопоставлением id: он оставит строки B без соответствия в A. Для приведённых таблиц результат — 3 и 4.
Извлечение отсутствующих идентификаторов из второй таблицы
Используйте NOT EXISTS с сопоставлением id: он оставит строки B без соответствия в A. Для приведённых таблиц результат — 3 и 4.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Имеются две таблицы — «A» и «B». Требуется составить SQL‑запрос, который вернёт все значения столбца id из таблицы «B», отсутствующие в таблице «A».
A | B
--- | ---
id | id
1 | 2
2 | 3
5 | 4
7 | 5
9 | 7
Ответ
Используйте NOT EXISTS с сопоставлением id: он оставит строки B без соответствия в A. Для приведённых таблиц результат — 3 и 4.
SELECT b.id
FROM B b
WHERE NOT EXISTS (SELECT 1 FROM A a WHERE a.id = b.id)
ORDER BY b.id;
Индекс A(id) помогает проверке существования. Если в B возможны повторы и нужны именно уникальные значения, добавьте DISTINCT. Вариант NOT IN требует аккуратности с NULL в подзапросе. Здесь сравнение предполагает обычные ненулевые идентификаторы.