LEFT JOIN сохраняет все строки слева и добавляет совпавшие справа; INNER JOIN оставляет только совпадения, RIGHT и FULL расширяют сохранение строк на другую сторону или обе.
Знаешь ли отличия между JOIN-ами, например LEFT JOIN?
LEFT JOIN сохраняет все строки слева и добавляет совпавшие справа; INNER JOIN оставляет только совпадения, RIGHT и FULL расширяют сохранение строк на другую сторону или обе.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
LEFT JOIN сохраняет все строки слева и добавляет совпавшие справа; INNER JOIN оставляет только совпадения, RIGHT и FULL расширяют сохранение строк на другую сторону или обе.
Например, чтобы найти клиентов без заказов, можно выполнить LEFT JOIN по client_id и отобрать строки, где идентификатор заказа NULL. Условие соединения должно отражать реальные ключи, иначе возникнет размножение строк. Фильтры в ON и WHERE имеют разный эффект для outer join. Не достаточно знать названия: полезно нарисовать маленькие таблицы и предсказать результат с отсутствующими и повторяющимися ключами.