Back to questions
СБЕР
Junior — Middle
77
Чем отличается использование LEFT JOIN от простого условия WHERE при объединении таблиц?
Companies where asked
Answer from AI
sobes.tech AI
LEFT JOIN возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если в правой таблице нет совпадений, то поля правой таблицы будут заполнены NULL.
Условие WHERE при объединении таблиц обычно используется с INNER JOIN (или без JOIN, просто с перечислением таблиц), и оно фильтрует строки после объединения, оставляя только те, где условие истинно.
Главное отличие:
- LEFT JOIN сохраняет все строки из левой таблицы, даже если нет совпадений в правой.
- Использование условия WHERE для фильтрации по полям правой таблицы после LEFT JOIN может фактически превратить его в INNER JOIN, так как строки с NULL в правой таблице будут отфильтрованы.
Пример:
SELECT a.id, b.value
FROM A a
LEFT JOIN B b ON a.id = b.a_id
WHERE b.value = 'test';
Этот запрос вернет только те строки, где в B есть совпадение и value = 'test', то есть фактически INNER JOIN.
Чтобы сохранить все строки из A, условие по B.value нужно переносить в ON:
SELECT a.id, b.value
FROM A a
LEFT JOIN B b ON a.id = b.a_id AND b.value = 'test';