Объясните, как работает оператор LEFT JOIN в SQL

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

Ответ

LEFT JOIN (или LEFT OUTER JOIN) возвращает все строки из левой (первой) таблицы и совпадающие строки из правой таблицы. Если совпадения нет, в колонках правой таблицы будут значения NULL.

Синтаксис и пример:

SELECT 
    employees.name,
    departments.department_name
FROM employees
LEFT JOIN departments 
    ON employees.department_id = departments.id;

Этот запрос вернет всех сотрудников, включая тех, кто не привязан ни к одному отделу (в department_name будет NULL).

Ключевые особенности и применение:

  • Порядок таблиц важен: A LEFT JOIN BB LEFT JOIN A.
  • Условие соединения: Указывается в ON. Для фильтрации результата после соединения используется WHERE.
  • Поиск отсутствующих записей: Частый кейс — найти записи в левой таблице, для которых нет соответствия в правой.
    -- Найти сотрудников без отдела
    SELECT employees.name
    FROM employees
    LEFT JOIN departments 
        ON employees.department_id = departments.id
    WHERE departments.id IS NULL;
  • Дублирование строк: Если в правой таблице несколько строк подходят под условие ON, строка из левой таблицы будет продублирована для каждого совпадения.

Почему LEFT JOIN, а не INNER? INNER JOIN вернет только пересечение, отфильтровав сотрудников без отдела, что не всегда требуется для анализа.