LEFT JOIN
Возвращает все строки из левой таблицы. Для строк без пары в правой — NULL.
SELECT ... FROM t1 LEFT JOIN t2 ON t1.id = t2.t1_id;
Объяснение
Пример
-- Все пользователи, даже без заказов SELECT u.name, COUNT(o.id) AS orders_count FROM users u LEFT JOIN orders o ON o.user_id = u.id GROUP BY u.id, u.name; -- Пользователи БЕЗ заказов SELECT u.* FROM users u LEFT JOIN orders o ON o.user_id = u.id WHERE o.id IS NULL;
Связанные термины
Анекдоты по теме
В баре сидит DBA. К нему подходит молодой разработчик: — Я написал запрос на 500 строк. Там 12 уровней вложенных подзапросов, кросс-джойн на 8 таблиц, оконные функции внутри WHERE, а потом GROUP BY на хэш-таблицу с миллиардом строк. Он выполняется 3 дня. Как оптимизировать? DBA, не поднимая глаз от виски: — Очень просто. Пиши: TRUNCATE TABLE career_results. И иди в менеджеры.
— Почему INNER JOIN похож на интроверта? — Он общается только с теми, кого уже знает.
ORM приходит к психотерапевту: — Я генерирую запросы. Терапевт: — И что в этом плохого? ORM: — 500 JOIN на пустой таблице. Терапевт: — А lazy loading пробовали? ORM: — Тогда 500 отдельных запросов. Терапевт: — Вам нужен DBA.