Není to chyba. Protože jste sloupec nekvalifikovali, Oracle jej interpretuje jako aktuální hodnotu sloupce z tabulky A -- která je v rozsahu (srov. korelativní dílčí dotaz). Poddotaz tedy vytvoří tolik duplikátů hodnoty sloupce, kolik je řádků v tabulce B.
in
podmínka se na základě toho stane buď pravdivou, nebo nepravdivou. Pokud je tabulka B prázdná, bude vždy nepravda. Bude také nepravda v případech, kdy Col_A
je nulový. Ale ve všech ostatních případech to bude pravda. Získáte tedy tolik výsledků, kolik je řádků v tabulce A, které mají nenulovou hodnotu v Col_A
, kromě případů, kdy je tabulka B prázdná, v takovém případě nezískáte žádné výsledky.