Все статьи

SQL JOIN для начинающих — полное руководство

2026-03-0412 мин чтения

JOIN — одна из ключевых операций в SQL, позволяющая объединять данные из нескольких таблиц. Без понимания JOIN невозможно работать с реляционными базами данных.

Что такое JOIN?

JOIN соединяет строки из двух или более таблиц на основе связанного столбца. Представьте две таблицы: employees (сотрудники) и departments (отделы). У каждого сотрудника есть department_id, который указывает на его отдел.

INNER JOIN — пересечение

Возвращает только строки, которые имеют совпадения в обеих таблицах.

SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;

Если у сотрудника нет отдела (NULL) или отдел не существует — строка не попадёт в результат.

LEFT JOIN — все из левой таблицы

Возвращает все строки из левой таблицы и совпадающие из правой. Если совпадения нет — правая часть заполняется NULL.

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

Используйте LEFT JOIN когда нужны все записи из основной таблицы, даже если связанных данных нет.

RIGHT JOIN — все из правой таблицы

Аналогично LEFT JOIN, но приоритет у правой таблицы. На практике используется реже — обычно проще поменять таблицы местами и использовать LEFT JOIN.

SELECT e.name, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.id;

FULL OUTER JOIN — объединение всего

Возвращает все строки из обеих таблиц. Где совпадений нет — заполняет NULL.

SELECT e.name, d.department_name
FROM employees e
FULL OUTER JOIN departments d ON e.department_id = d.id;

Важно: MySQL не поддерживает FULL OUTER JOIN напрямую — используйте UNION из LEFT и RIGHT JOIN.

CROSS JOIN — декартово произведение

Каждая строка первой таблицы соединяется с каждой строкой второй. Результат: N × M строк.

SELECT e.name, p.project_name
FROM employees e
CROSS JOIN projects p;

Используется редко, но полезен для генерации комбинаций (например, все сотрудники × все месяцы).

SELF JOIN — таблица сама с собой

Соединение таблицы с самой собой. Классический пример — иерархия сотрудник-менеджер:

SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

Типичные ошибки

  • Забыли ON — без условия JOIN превращается в CROSS JOIN
  • Дубликаты строк — если связь «один ко многим», строки дублируются. Используйте DISTINCT или GROUP BY
  • NULL в условии — NULL ≠ NULL, поэтому строки с NULL не соединяются через обычный =

Какой JOIN выбрать?

  • INNER JOIN — нужны только полные данные из обеих таблиц
  • LEFT JOIN — нужны все записи основной таблицы + дополнительные данные
  • FULL JOIN — нужен полный обзор обеих таблиц
  • CROSS JOIN — генерация всех комбинаций

Практикуйте SQL прямо сейчас — 500+ задач с мгновенной проверкой

Начать бесплатно