Es ist kein Fehler. Da Sie die Spalte nicht qualifiziert haben, interpretiert Oracle sie als den aktuellen Spaltenwert aus Tabelle A – der innerhalb des Gültigkeitsbereichs liegt (vgl. eine korrelative Unterabfrage). Die Unterabfrage erzeugt also nur so viele Duplikate dieses Spaltenwerts, wie es Zeilen in Tabelle B gibt.
Der in
Bedingung wird basierend darauf entweder wahr oder falsch. Es ist immer falsch, wenn Tabelle B leer ist. Es ist auch in Fällen falsch, in denen Col_A
ist Null. Aber in allen anderen Fällen wird es wahr sein. Sie erhalten also so viele Ergebnisse, wie es Zeilen in Tabelle A gibt, die einen Nicht-Null-Wert in Col_A
haben , außer wenn Tabelle B leer ist, dann erhalten Sie keine Ergebnisse.