ВНУТРЕННИЕ СОЕДИНЕНИЯ
При работе с INNER JOIN не имеет значения, будет ли фильтрация таблицы, к которой присоединяется, следовать предложению ON
или произойдет в предложении WHERE
- она выдаст тот же набор результатов.
НАРУЖНЫЕ СОЕДИНЕНИЯ
Но это не так для НАРУЖНЫХ СОЕДИНЕНИЙ ...
В OUTER JOIN, если вы укажете критерии фильтрации в предложении ON
- критерии будут применены до , когда будет выполнено JOIN. Вот пример:
FROM TABLE_1 a
LEFT JOIN TABLE_2 b ON b.cola = a.cola
AND b.col1 IN (1,2,3)
Это может существенно повлиять на набор результатов по сравнению с тем, если критерии были указаны в ГДЕ:
FROM TABLE_1 a
LEFT JOIN TABLE_2 b ON b.cola = a.cola
WHERE b.col1 IN (1,2,3)
Заключение
Все, что имеет значение, это то, что вы:
- Знай разницу
- Соответствуют вашей структуре запросов