Базы данных / SQL trainee
LEFT JOIN: ON или WHERE — есть разница?
Ответ
Да! Условие в ON применяется ДО объединения — несоответствующие строки правой таблицы сохраняются, а её поля становятся NULL. Условие в WHERE применяется ПОСЛЕ — строки с NULL отфильтровываются, и LEFT JOIN превращается в INNER JOIN.
Разбор: Условие на правую таблицу в ON применяется ДО соединения: несовпавшие строки сохраняются, а поля правой таблицы становятся NULL. То же условие в WHERE применяется ПОСЛЕ соединения и отсекает строки с NULL, фактически превращая LEFT JOIN в INNER JOIN. Ловушки: оптимизатор не эквивалентен в этих случаях, и порядок применения именно ON-до / WHERE-после, а не наоборот.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.