Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle ignoriert einen ungültigen Bezeichnerfehler in der Unterabfrage

Sie haben Ihre Spaltennamen nicht qualifiziert. Du denkst also, du läufst:

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

Wenn f.airc_manufact nicht existiert, dann besagen die Bereichsregeln, dass in der äußeren Abfrage nachgesehen werden soll. Was Sie also wirklich ausführen, ist:

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

Das ist als Filterklausel ziemlich nutzlos.

Moral:Immer Qualifizieren Sie Spaltennamen in einer Abfrage, insbesondere wenn sich die Abfrage auf mehr als eine Tabelle bezieht.