У звичайних умовах умови фільтра можуть бути визначені або в пунктах WHERE або JOIN. Я схильний розміщувати фільтри під тим, де не може бути порушений пріоритет OUTER JOIN (див. Нижче) або якщо фільтр дуже специфічний для цієї таблиці (наприклад, TYPE = 12, щоб вказати певний підмножина рядків у таблиці).
З іншого боку, і положення ON і WHERE можуть використовуватися для визначення умов приєднання (на відміну від умов фільтра). Поки ви використовуєте лише INNER, він все одно не має значення, яким ви користуєтесь у звичайних обставинах.
Якщо ви використовуєте OUTER приєднання, однак, це може дуже змінити. Якщо, наприклад, ви вказали ВІДНІШНЕ ПРИЄДНАННЯ між двома таблицями (t1 та t2), але потім, у пункті WHERE, перейдіть, щоб вказати співвідношення eqijoin між таблицями (наприклад, t1.col = t2.col), у вас просто перетворив ВНУТРІШНЕ приєднання до ІННЕРУ! Це тому, що WHERE може бути використаний для вказівки equijoin (або, можливо, навіть OUTER приєднання, залежно від версії, використовуючи застарілий синтаксис * =), не використовуючи пункт ON, а коли WHERE вказує на внутрішній еквіоргін між таблицями, він переосмислює зовнішній ПРИЄДНАЙТЕСЬ (якщо є).
Первісне питання стосувалося фільтрів, де тип з'єднання часто не повинен бути проблемою, але приєднання також може діяти як фільтр, і в таких ситуаціях розміщення умови з'єднання, безумовно, може мати значення.