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

oracle ignorerer ugyldig identifikationsfejl i underforespørgsel

Du har ikke kvalificeret dine kolonnenavne. Så du tror, ​​du kører:

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

Hvis f.airc_manufact ikke eksisterer, så siger scoping-reglerne, at man skal kigge i den ydre forespørgsel. Så hvad du egentlig kører er:

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

Det er ret ubrugeligt som en filtreringsklausul.

Moral:Altid kvalificere kolonnenavne i en forespørgsel, især hvis forespørgslen refererer til mere end én tabel.




  1. Forespørgselsprofilering 101 — Ja, det kan virkelig forbedre din SQL Server-ydeevne

  2. MySQL IF() Funktion forklaret

  3. mysql hvordan man får 2. højeste værdi med gruppe ved og i en venstre join

  4. Sådan ændres kolonnens position i postgresql uden at dumpe