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

ORA-00918:kolonne er tvetydigt defineret i SELECT *

En forespørgsels projektion kan kun have én forekomst af et givet navn. Som din WHERE-sætning viser, har du flere tabeller med en kolonne kaldet ID. Fordi du vælger * din projektion vil have flere kolonner kaldet ID. Eller det ville have været det, hvis det ikke var for compileren, der slyngede ORA-00918.

Løsningen er ret enkel:du bliver nødt til at udvide projektionen for eksplicit at vælge navngivne kolonner. Derefter kan du enten udelade de duplikerede kolonner, blot beholde (f.eks.) COACHES.ID eller bruge kolonnealiasser:coaches.id as COACHES_ID .

Måske slår det dig som en masse skrivning, men det er den eneste måde. Hvis det er nogen bekvemmelighed, SELECT * betragtes som dårlig praksis i produktionskode:eksplicit navngivne kolonner er meget sikrere.



  1. MySQL NULLIF() Forklaret

  2. Hvad er det mindste klientfodaftryk, der kræves for at forbinde C# til en Oracle-database?

  3. Sådan eksporteres forespørgselsresultat til Excel i Oracle SQL Developer?

  4. Hvordan kan fremmednøglebegrænsninger midlertidigt deaktiveres ved hjælp af T-SQL?