sql >> Database teknologi >  >> RDS >> Oracle

Forespørgsel med brudt undervalg burde resultere i fejl, men returnerer rækker

Årsagen er, at når en ualiased kolonne ikke findes i underforespørgslen, men findes i den ydre forespørgsel, antager Oracle, at du henviser til kolonnen fra den ydre forespørgsel.

Med aliaser vil den forespørgsel, du er forvirret over, se sådan ud:

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

Forhåbentlig gør det tingene klarere?

Det problem, du ser, er et meget godt eksempel på, hvorfor du altid bør mærke dine kolonner med, hvilken tabel de kom fra - det gør det meget nemmere at vedligeholde forespørgslen til en start!



  1. Laravel-opdateringEllerOpret med automatisk inkrementel database

  2. Erklærer brugerdefineret undtagelse ved hjælp af RAISE_APPLICATION_ERROR-metoden i Oracle-databasen

  3. Hvordan lukkes inaktive forbindelser i PostgreSQL automatisk?

  4. php/timeout/forbindelse til server nulstillet?