Oracle
 sql >> Base de données >  >> RDS >> Oracle

jointures internes implicites - sont-elles égales?

Je vais aborder la question de savoir si ces inégalités sont toujours vrai. La réponse est "non", pas en SQL. Dans la plupart des cas, ils sont équivalents. Le problème se pose avec la conversion de type implicite.

En particulier, si a.id est un nombre et les autres colonnes sont des chaînes, alors vous avez la situation où :

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

Vous pouvez voir ceci sur cette db<>violon. Il serait trivial de configurer cela en utilisant JOIN s, mais comme je ne vais pas écrire de code contenant des virgules dans le FROM clause, je vous laisse cet exercice.

En pratique, les identifiants utilisés pour les jointures doivent être du même type. Vous ne pouvez même pas déclarer une relation de clé étrangère si ce n'est pas le cas. Cette meilleure pratique mise à part, les deux requêtes ne sont pas automatiquement équivalentes.

Remarque :Ce serait tout aussi vrai si vous utilisiez des informations appropriées, explicites et standard JOIN syntaxe, que je vous encourage fortement, fortement à apprendre et à utiliser exclusivement.