Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-00918:колона двусмислено дефинирана в SELECT *

Проекцията на заявка може да има само един екземпляр на дадено име. Както показва вашата клауза WHERE, имате няколко таблици с колона, наречена ID. Тъй като избирате * вашата проекция ще има няколко колони, наречени ID. Или щеше да беше, ако не беше компилаторът, който хвърли ORA-00918.

Решението е съвсем просто:ще трябва да разширите проекцията, за да изберете изрично именувани колони. След това можете или да пропуснете дублиращите се колони, запазвайки само (да речем) COACHES.ID или да използвате псевдоними на колони:coaches.id as COACHES_ID .

Може би това ви се струва, че пишете много, но това е единственият начин. Ако ви е удобно, SELECT * се счита за лоша практика в производствения код:изрично назованите колони са много по-безопасни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RAC последователност Contention

  2. Как мога да вмъкна няколко реда в oracle със стойност на последователност?

  3. Изгледът ALL_PROCEDURES не показва PROCEDURE_NAME

  4. Изявление на ORACLE IIF

  5. Проверете дали текущата дата е между две дати Oracle SQL