Het is geen bug. Aangezien u de kolom niet hebt gekwalificeerd, interpreteert Oracle deze als de huidige kolomwaarde uit tabel A -- die binnen het bereik valt (zie een correlatieve subquery). Dus de subquery produceert net zoveel duplicaten van die kolomwaarde als er rijen zijn in tabel B.
De in
voorwaarde wordt op basis daarvan waar of onwaar. Het zal altijd onwaar zijn als tabel B leeg is. Het zal ook onwaar zijn in gevallen waarin Col_A
is niets. Maar in alle andere gevallen zal het waar zijn. U krijgt dus net zoveel resultaten als er rijen in tabel A zijn die een niet-null-waarde hebben in Col_A
, behalve wanneer tabel B leeg is, in welk geval u geen resultaten krijgt.