Вывести id из таблицы B, которые отсутствуют в таблице A

Антисоединение через NOT EXISTS возвращает значения B, для которых в A нет равного id. В данном примере это 4, 5, 6 и 8.

Короткий ответ

Что ответить на собеседовании

Антисоединение через NOT EXISTS возвращает значения B, для которых в A нет равного id. В данном примере это 4, 5, 6 и 8.

Подробный разбор

Ответ с пояснениями

Условие

Имеются две таблицы, каждая из которых содержит столбец id. Необходимо написать запрос, который вернёт все значения id из второй таблицы, но только те, которых нет в первой.

   A       B
+----+   +----+
| id |   | id |
+----+   +----+
|  1 |   |  2 |
|  2 |   |  3 |
|  3 |   |  4 |
|  7 |   |  5 |
| 12 |   |  6 |
| 17 |   |  7 |
| 19 |   | 17 |
+----+   |  8 |
         +----+

Ответ

Антисоединение через NOT EXISTS возвращает значения B, для которых в A нет равного id. В данном примере это 4, 5, 6 и 8.

SELECT b.id
FROM B b
WHERE NOT EXISTS (
  SELECT 1 FROM A a WHERE a.id = b.id
)
ORDER BY b.id;

Порядок результата без ORDER BY не гарантирован. Уникальность вывода зависит от B: для устранения повторов добавьте DISTINCT. NULL при обычном равенстве не совпадает с NULL; если такие идентификаторы разрешены, требование к ним нужно определить отдельно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее