sql >> Base de Datos >  >> RDS >> Mysql

¿Alguien puede ayudar a explicar por qué no usar SQL JOIN es una mala práctica y es incorrecto?

Es cierto que ambas formas de sintaxis deberían dar el mismo resultado e internamente MySQL las ejecuta exactamente de la misma manera. Las versiones actuales del estándar SQL admiten ambas formas, aunque el estilo de coma solo se admite por motivos de compatibilidad con versiones anteriores.

Hay un caso en el que falla el uso de la sintaxis de estilo coma, pero es exótico:

SELECT * FROM A, B JOIN C ON C.x = A.y;

El JOIN El operador tiene mayor precedencia que la coma. Entonces, como la consulta anterior intenta evaluar C.x = A.y ni siquiera sabe que A es parte de la consulta. Entonces obtienes un error:

ERROR 1054 (42S22): Unknown column 'A.y' in 'on clause'

El mejor remedio es usar el JOIN sintaxis consistentemente en lugar de mezclarlas.

Además, no puede realizar combinaciones externas con la sintaxis de combinación de comas. Oracle y Sybase/Microsoft inventaron cada uno su propia sintaxis patentada para manejar uniones externas, pero ninguna otra marca de RDBMS las admite. Hoy en día, todas las versiones actuales de RDBMS, incluidas Oracle y Sybase/Microsoft, admiten el JOIN estándar. sintaxis, por lo que no hay una buena razón para usar las extensiones heredadas específicas del proveedor.