LEFT JOIN

Базовый SQL
≈ 1 мин чтения

LEFT JOIN сохраняет всю левую таблицу

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

SELECT u.id, u.name, o.id AS order_id
FROM users AS u
LEFT JOIN orders AS o ON o.user_id = u.id;

В результате останутся все пользователи — в том числе те, у кого ещё нет заказов. Для таких пользователей order_id будет NULL.

LEFT JOIN часто используют для поиска отсутствующих связей

SELECT u.id, u.name
FROM users AS u
LEFT JOIN orders AS o ON o.user_id = u.id
WHERE o.id IS NULL;

Здесь соединение сначала сохраняет всех пользователей, а затем WHERE оставляет только тех, для кого заказ справа не нашёлся.

Для LEFT JOIN порядок таблиц имеет смысл. Слово LEFT буквально означает: «сохрани все строки того источника, который написан слева от JOIN».