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

Drôle de sous-requête Oracle

Ce n'est pas un bogue. Comme vous n'avez pas qualifié la colonne, Oracle l'interprète comme la valeur de colonne actuelle de la table A -- qui est dans la portée (cf. une sous-requête corrélative). Ainsi, la sous-requête produit autant de doublons de cette valeur de colonne qu'il y a de lignes dans la table B.

Le in la condition deviendra vraie ou fausse en fonction de cela. Il sera toujours faux lorsque la table B est vide. Il sera également faux dans les cas où Col_A est nul. Mais dans tous les autres cas, ce sera vrai. Vous obtiendrez donc autant de résultats qu'il y a de lignes dans la table A qui ont une valeur non nulle dans Col_A , sauf lorsque la table B est vide, auquel cas vous n'obtenez aucun résultat.