INNER JOIN возвращает только те строки, для которых есть совпадение в обеих таблицах. Если в одной из них нет соответствия — строка не попадает в результат.
LEFT JOIN возвращает все строки из левой таблицы. Если в правой таблице нет совпадения — вместо данных подставляется NULL.
-- INNER JOIN: только клиенты с заказами
SELECT c.name, o.order_id
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id;
-- LEFT JOIN: все клиенты, даже без заказов
SELECT c.name, o.order_id
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id;
С помощью LEFT JOIN можно найти записи, у которых нет пары в правой таблице — достаточно добавить условие WHERE o.order_id IS NULL. Это частый паттерн для поиска «сирот» в данных.
LEFT JOIN всегда возвращает больше строк, чем INNER JOIN, потому что включает все строки из левой таблицы, даже если для них нет совпадений.
Новый — ещё не проверен сообществом
Вы