Ответ
INNER JOIN возвращает только те строки, где есть совпадения в обеих таблицах. Если совпадений нет - строка не попадет в результат.
LEFT JOIN (или LEFT OUTER JOIN) возвращает все строки из левой таблицы, даже если нет совпадений в правой. В таком случае поля из правой таблицы будут NULL.
Пример:
-- INNER JOIN (только заказы с клиентами)
SELECT o.id, c.name
FROM orders o
INNER JOIN customers c ON o.customer_id = c.id;
-- LEFT JOIN (все заказы, даже без клиентов)
SELECT o.id, c.name
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.id;
Основное отличие: INNER JOIN фильтрует данные, LEFT JOIN сохраняет все записи из левой таблицы.
Видео-ответы
▶