В чем разница между LEFT JOIN и RIGHT JOIN в SQL?

«В чем разница между LEFT JOIN и RIGHT JOIN в SQL?» — вопрос из категории Базы данных и SQL, который задают на 24% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

LEFT JOIN и RIGHT JOIN — это типы внешних соединений (OUTER JOIN), которые возвращают все строки из одной таблицы и сопоставленные строки из другой. Разница — в том, какая таблица считается главной (все строки обязательны).

LEFT JOIN

Возвращает все записи из левой (первой) таблицы, даже если для них нет совпадений в правой таблице. Для несовпадающих строк поля из правой таблицы будут NULL.

SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.id;
-- Результат: ВСЕ сотрудники, даже те, кто не привязан к отделу.

RIGHT JOIN

Возвращает все записи из правой (второй) таблицы, даже если для них нет совпадений в левой таблице. Для несовпадающих строк поля из левой таблицы будут NULL.

SELECT e.name, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.id;
-- Результат: ВСЕ отделы, даже те, в которых нет сотрудников.

Практическое правило:

  • LEFT JOIN используется значительно чаще.
  • Любой RIGHT JOIN можно переписать как LEFT JOIN, просто поменяв таблицы местами в запросе. Это делает код более единообразным и легким для чтения.

Визуализация:

Таблица A          LEFT JOIN A-B          RIGHT JOIN A-B (эквивалентно LEFT JOIN B-A)
[1, 2, 3]  JOIN  [1, 2, 3, NULL]   VS   [NULL, 2, 3, 4]
Таблица B          [a, b, c, NULL]        [NULL, b, c, d]
[a, b, c, d]