Встречается на собеседованиях • сегодня

Сталкивался ли с Anti JOIN в PostgreSQL

Да, Anti JOIN (или Anti Semi JOIN) — это техника для нахождения записей в одной таблице, которых нет в другой. В PostgreSQL это реализуется через LEFT JOIN с проверкой на NULL или через NOT EXISTS.

Пример с LEFT JOIN:

sql
SELECT a.*
FROM table_a a
LEFT JOIN table_b b ON a.id = b.a_id
WHERE b.a_id IS NULL;

Пример с NOT EXISTS (часто более эффективен):

sql
SELECT a.*
FROM table_a a
WHERE NOT EXISTS (
    SELECT 1 FROM table_b b 
    WHERE b.a_id = a.id
);

Ключевые моменты:

  1. LEFT JOIN + NULL проверка может быть менее эффективна на больших таблицах
  2. NOT EXISTS обычно оптимизируется лучше
  3. В PostgreSQL также есть EXCEPT, но он работает иначе (сравнивает полные наборы строк)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы