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

ORA-00918:Spalte in SELECT nicht eindeutig definiert *

Die Projektion einer Abfrage kann nur eine Instanz eines bestimmten Namens haben. Wie Ihre WHERE-Klausel zeigt, haben Sie mehrere Tabellen mit einer Spalte namens ID. Weil Sie * auswählen Ihre Projektion hat mehrere Spalten namens ID. Oder es hätte es gegeben, wenn der Compiler nicht ORA-00918 geschleudert hätte.

Die Lösung ist ganz einfach:Sie müssen die Projektion erweitern, um explizit benannte Spalten auszuwählen. Dann können Sie entweder die doppelten Spalten weglassen und nur (sagen wir) COACHES.ID beibehalten oder Spaltenaliase verwenden:coaches.id as COACHES_ID .

Vielleicht kommt Ihnen das wie viel Tipparbeit vor, aber es ist der einzige Weg. Wenn es dich tröstet, SELECT * gilt im Produktionscode als schlechte Praxis:explizit benannte Spalten sind viel sicherer.