Какой тип JOIN в SQL используется для вывода всех записей из левой таблицы, даже если нет совпадений в правой?

«Какой тип JOIN в SQL используется для вывода всех записей из левой таблицы, даже если нет совпадений в правой?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для этого используется LEFT JOIN (или LEFT OUTER JOIN). Он возвращает все строки из левой (первой) таблицы и соответствующие строки из правой таблицы. Если совпадений нет, поля из правой таблицы будут содержать NULL.

Пример:

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

Этот запрос выведет всех пользователей, включая тех, у кого нет заказов. Для таких пользователей order_id будет NULL.

Сравнение с другими JOIN:

  • INNER JOIN — возвращает только строки, где есть совпадение в обеих таблицах.
  • RIGHT JOIN — возвращает все строки из правой таблицы и совпадающие из левой.
  • FULL OUTER JOIN — возвращает все строки из обеих таблиц, заполняя отсутствующие совпадения NULL.