Короткий ответ INNER JOIN возвращает только строки, для которых есть совпадение в обеих таблицах, а LEFT JOIN возвращает все строки левой таблицы, подставляя NULL в колонки правой таблицы, если совпадения нет. Как это работает подробнее INNER JOIN выполняет пересечение по условию ON — строка попадает в результат только при наличии совпадения с другой стороны. LEFT JOIN сохраняет все строки левой таблицы независимо от совпадения, дополняя отсутствующие значения NULL. Пример кода Что использовать на практике Практика. LEFT JOIN используют, когда нужно показать все записи «главной» сущности, даже без связанных данных — например, всех пользователей, включая тех, у кого пока нет заказов. INNER JOIN применяют, когда связанные данные обязательны для смысла строки. Подводные камни Ошибка. Добавляют условие на колонку правой таблицы в WHERE вместо ON при LEFT JOIN (например WHERE orders.status = 'paid'), что превращает LEFT JOIN обратно в INNER JOIN, отфильтровывая пользователей без заказов.