sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es la diferencia entre usar una unión cruzada y poner una coma entre las dos tablas?

Devuelven los mismos resultados porque son semánticamente idénticos. esto:

select * 
  from A, B

... es (mueca) sintaxis ANSI-89. Sin una cláusula WHERE para unir las tablas, el resultado es un producto cartesiano. Que es exactamente lo que ofrece la alternativa también:

    select * 
      from A 
cross join B

...pero CROSS JOIN es sintaxis ANSI-92.

Acerca del rendimiento

No hay diferencia de rendimiento entre ellos.

¿Por qué usar ANSI-92?

La razón para usar la sintaxis ANSI-92 es para la compatibilidad con OUTER JOIN (ES decir:IZQUIERDA, COMPLETA, DERECHA) -- La sintaxis ANSI-89 no tiene ninguna, por lo que muchas bases de datos implementaron la suya propia (que no se adapta a ninguna otra base de datos). ). IE:(+) de Oracle , =* de SQL Server