En circunstancias normales, las condiciones de filtro se pueden especificar en las cláusulas WHERE o JOIN. Tiendo a colocar filtros debajo de DONDE, a menos que la prioridad de OUTER JOIN pueda verse afectada (ver más abajo) o si el filtro es muy específico para esa tabla (por ejemplo, TYPE = 12 para especificar un subconjunto específico de filas en la tabla).
Por otro lado, las cláusulas ON y WHERE pueden usarse para especificar condiciones de unión (en oposición a las condiciones de filtro). Mientras use solo combinaciones INNER, no importará cuál use en circunstancias normales.
Sin embargo, si está utilizando combinaciones OUTER, puede hacer una gran diferencia. Si, por ejemplo, especifica una UNIÓN EXTERNA entre dos tablas (t1 y t2) pero luego, en la cláusula WHERE, especifica una relación eqijoin entre las tablas (por ejemplo, t1.col = t2.col), simplemente tiene ¡Convirtió la unión EXTERIOR en una unión INTERNA! Esto se debe a que WHERE se puede usar para especificar un equijoin (o tal vez incluso una unión OUTER, dependiendo de la versión, usando la sintaxis obsoleta * =) sin usar una cláusula ON, y cuando WHERE indica un equijoin interno entre las tablas, anula un OUTER ÚNETE (si está presente).
La pregunta original era acerca de los filtros, donde el tipo de unión a menudo no debería ser un problema, pero una unión también puede actuar como un filtro y en esas situaciones la ubicación de la condición de unión ciertamente puede importar.