Ответ
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 B≠B 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 вернет только пересечение, отфильтровав сотрудников без отдела, что не всегда требуется для анализа.