sql >> Databasteknik >  >> RDS >> Oracle

ORA-00918:kolumn är tvetydigt definierad i SELECT *

En frågas projektion kan bara ha en instans av ett givet namn. Som din WHERE-sats visar har du flera tabeller med en kolumn som heter ID. Eftersom du väljer * din projektion kommer att ha flera kolumner som kallas ID. Eller så hade det varit om det inte vore för kompilatorn som slungade ORA-00918.

Lösningen är ganska enkel:du måste expandera projektionen för att explicit välja namngivna kolumner. Sedan kan du antingen utelämna dubblettkolumnerna, bara behålla (säg) COACHES.ID eller använda kolumnalias:coaches.id as COACHES_ID .

Det kanske slår dig som mycket att skriva, men det är det enda sättet. Om det är någon bekvämlighet, SELECT * betraktas som dålig praxis i produktionskod:explicit namngivna kolumner är mycket säkrare.



  1. Upptäck PL/SQL-paketnivåtyper med hjälp av Oracle-ordboksvyer

  2. Minska databasanrop för att förbättra webbplatsens prestanda

  3. Hur TIMESTAMP() fungerar i MariaDB

  4. En databasmodell för en onlineundersökning. Del 4