Ответ
Основное отличие — в том, какие строки из соединяемых таблиц попадают в результирующий набор.
- INNER JOIN возвращает только те записи, где есть совпадение в обеих таблицах по условию соединения. Строки без соответствия исключаются.
- LEFT JOIN возвращает все записи из левой таблицы и соответствующие записи из правой. Если соответствия нет, поля из правой таблицы заполняются
NULL. - RIGHT JOIN — зеркальный вариант
LEFT JOIN. Возвращает все записи из правой таблицы и соответствующие из левой.
Пример на практике:
-- Таблицы: users (id, name), orders (id, user_id, amount)
-- INNER JOIN: Только пользователи, сделавшие заказы
SELECT u.name, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- LEFT JOIN: Все пользователи, даже если у них нет заказов
SELECT u.name, o.amount
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
-- Для пользователя без заказов в колонке amount будет NULL
-- RIGHT JOIN: Все заказы, даже если пользователь удален (user_id не найден в users)
SELECT u.name, o.amount
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;
Когда что использовать:
INNER JOIN— стандартный сценарий, когда нужны только связанные данные (например, отчет по выполненным заказам).LEFT JOIN— для анализа полноты данных (найти пользователей без заказов) или когда основная сущность — левая таблица.RIGHT JOINиспользуется реже, так как его логику обычно можно выразить черезLEFT JOIN, поменяв таблицы местами.
Видео-ответы
▶
Собеседование senior backend PHP теоретическая часть 2024 год
▶
Собеседование на Java-разработчика, вопросы для подготовки: finalize method, ArrayList, REST и SOAP
▶
Тестовое собеседование Java разработчика #4 - Андраник Михаилян
▶
Junior Python Developer: полный разбор собеседования и ответы на наиболее частые вопросы интервью