En MySQL, la escritura JOIN
no calificada implica INNER JOIN
. En otras palabras, el INNER
de INNER JOIN
es opcional. INNER
y CROSS
son sinónimos en MySQL. Para mayor claridad, escribo JOIN
o INNER JOIN
si tengo una condición de unión y CROSS JOIN
si no tengo una condición.
La sintaxis permitida para las combinaciones se describe en la documentación .
En este momento, estoy pensando que un JOIN independiente no es más que (idéntico a) usar comas y cláusulas WHERE.
El efecto es el mismo, pero la historia detrás de ellos es diferente. La sintaxis de la coma es del estándar ANSI-89. Sin embargo, hay varios problemas con esta sintaxis, por lo que en el estándar ANSI-92 se introdujo la palabra clave JOIN.
Recomiendo encarecidamente que siempre use la sintaxis JOIN en lugar de la coma.
T1 JOIN T2 ON ...
es más legible que T1, T2 WHERE ...
.
- Es más fácil de mantener porque las relaciones de la tabla y los filtros están claramente definidos en lugar de mezclarse.
- La sintaxis de JOIN es más fácil de convertir a OUTER JOIN que la sintaxis de coma.
- Mezclar la sintaxis de coma y JOIN en la misma declaración puede dar errores curiosos debido a las reglas de precedencia.
- Es menos probable que se cree accidentalmente un producto cartesiano cuando se usa la sintaxis JOIN debido a una cláusula de unión olvidada, porque las cláusulas de unión están escritas junto a las combinaciones y es fácil ver si falta una.
SELECT * FROM t1, t2 JOIN t3 ON t1.x=t3.y WHERE t1.a = t2.b
Estos son todos equivalentes, y también es igual a,
CROSS JOIN
.Existen algunas diferencias entre el uso de comas y
[INNER | CROSS] JOIN
sintaxis, que pueden ser importantes al unir más tablas. Prácticamente todo lo que necesita saber se describe aquí en la documentación de MySQLJOIN
.fuente