sql >> Base de Datos >  >> RDS >> Oracle

Uniones internas implícitas:¿son iguales?

Voy a abordar la cuestión de si esas desigualdades son siempre verdadero. La respuesta es "no", no en SQL. En la mayoría de las circunstancias, son equivalentes. El problema surge con la conversión de tipos implícita.

En particular, si a.id es un número y otras columnas son cadenas, entonces tienes la situación donde:

1 = '1'        -- true
1 = '1.00'     -- true
'1' = '1.00'   -- false

Puedes ver esto en este db<>fiddle. Sería trivial configurar esto usando JOIN s, pero como no voy a escribir código que tenga comas en FROM cláusula, te dejo ese ejercicio a ti.

En la práctica, los id utilizados para las uniones deben ser del mismo tipo. Ni siquiera puede declarar una relación de clave externa si no lo son. Dejando de lado esa mejor práctica, las dos consultas no son automáticamente equivalentes.

Nota:Esto sería igual de cierto si usara estándar adecuado, explícito. JOIN sintaxis, que le recomiendo encarecidamente que aprenda y use exclusivamente.