SobesLab логотип SobesLab

Ответ

Условие в ON влияет на соединение таблиц: при LEFT JOIN оно определяет, какие строки правой таблицы "присоединятся" к каждой левой. WHERE же применяется уже к итоговому результату соединения. Разница: если условие, относящееся к правой таблице, написать в ON, то строки левой таблицы без соответствия получат NULL и сохранятся (так как условие ON к ним неприменимо), а если то же условие написать в WHERE, то эти NULL-строки будут отфильтрованы. Таким образом, перенесение условия из ON в WHERE при OUTER JOIN может превратить его по сути в INNER JOIN, отсекая "внешние" строки.