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

Как исключить пересечения в LEFT JOIN

LEFT JOIN возвращает все строки из левой таблицы, даже если нет совпадений в правой. Для исключения пересечений (строк, где есть совпадения) можно использовать:

  1. Добавить условие WHERE right_table.key IS NULL - это оставит только строки без совпадений:
sql
SELECT a.* 
FROM table_a a
LEFT JOIN table_b b ON a.id = b.a_id
WHERE b.a_id IS NULL
  1. Альтернативно использовать NOT EXISTS:
sql
SELECT a.* 
FROM table_a a
WHERE NOT EXISTS (
    SELECT 1 FROM table_b b 
    WHERE b.a_id = a.id
)

Оба подхода эффективны, но второй может быть более читаемым для сложных условий. Второй вариант часто лучше оптимизируется СУБД.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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