sql >> Database >  >> RDS >> Oracle

Oracle negeert ongeldige identificatiefout in subquery

U heeft uw kolomnamen niet gekwalificeerd. Dus je denkt dat je aan het rennen bent:

SELECT a.*
FROM aircraft a
WHERE a.airc_manufact IN (SELECT f.airc_manufact FROM flight f);

Als f.airc_manufact niet bestaat, zeggen de scopingregels om in de buitenste query te kijken. Dus wat je echt doet is:

SELECT a.*
FROM aircraft a
WHERE a.airc_manufact IN (SELECT a.airc_manufact FROM flight f);

Dat is vrij nutteloos als filterclausule.

Moraal:Altijd kwalificeer kolomnamen in een zoekopdracht, vooral als de zoekopdracht naar meer dan één tabel verwijst.




  1. MySQL Group van kwartalen naar periodes

  2. Waarom negeert Rails een Rollback in een (pseudo)geneste transactie?

  3. Wat is het equivalent van varchar(max) in Oracle?

  4. Alleen-lezen weergaven maken in SQL Server