sql >> Database >  >> RDS >> Oracle

Query met gebroken subselectie zou een fout moeten opleveren, maar retourneert rijen

De reden hiervoor is dat wanneer een niet-gealiaseerde kolom niet bestaat in de subquery maar wel in de buitenste query, Oracle ervan uitgaat dat u verwijst naar de kolom uit de buitenste query.

Met aliassen ziet de zoekopdracht waar u niet uitkomt er als volgt uit:

select *
from   test_values tv
where  tv.tst_id in (select tv.tst_id2
                     from   test_lookup tl
                     where  tl.tst_value = 'findMe');

Hopelijk maakt dat de zaken duidelijker?

Het probleem dat u ziet, is een heel goed voorbeeld van waarom u uw kolommen altijd moet labelen met de tabel waar ze vandaan komen - het maakt het veel gemakkelijker om de zoekopdracht om te beginnen te onderhouden!



  1. Authenticatie-plug-in 'caching_sha2_password' wordt niet ondersteund

  2. java.lang.IncompatibleClassChangeError:Class com.mysql.jdbc.Statement gevonden, maar interface werd verwacht

  3. MySQL trigger/procedure uitvoering vertraging

  4. Hibernate-toewijzing tussen PostgreSQL-enum en Java-enum