En MySQL escribiendo JOIN
no calificado implica INNER JOIN
. En otras palabras, el INNER
en 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 combinaciones se describe en la documentación .
El efecto es el mismo, pero la historia detrás de ellos es diferente. La sintaxis de coma es del estándar ANSI-89. Sin embargo, hay una serie de 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 queT1, 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 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 generar errores curiosos debido a las reglas de precedencia.
- Es menos probable que se cree accidentalmente un producto cartesiano al usar la sintaxis JOIN debido a una cláusula de unión olvidada, porque las cláusulas de unión se escriben junto a las uniones y es fácil ver si falta alguna.