關於在join中出現ORA-00918: 未明確定義列的解決辦法

YallonKing發表於2012-03-28
/*關於在join中出現ORA-00918: 未明確定義列的解決辦法*/
/*關於join和where表連線問題,需要在使用join時需要使用列的別名,避免相同列名的出現。*/
--以下為簡要測試過程:
--測試物件如下:
SQL> select * from oraking1;
        ID NAME
---------- --------------------
         1 oraking
         2 oraking2
         3 oraking3
SQL> select * from oraking2;
        ID NAME
---------- --------------------
         3 yallonking3
         2 yallonking2
         1 yallonking1
--使用inner join進行不存在相同列名時是成功的。如下:
SQL> select t.id from oraking1 s inner join (select id,name from oraking2) t on s.id=t.id;
        ID
----------
         3
         2
         1
--使用where進行不存在相同列名時是成功的。如下:
SQL> select t.id from oraking1 s , (select id,name from oraking2) t where s.id=t.id;
        ID
----------
         3
         2
         1
--使用inner join進行存在相同列名(name)時是不成功的。如下:
SQL> select t.id from oraking1 s inner join (select id,name,name from oraking2) t on s.id=t.id;
select t.id from oraking1 s inner join (select id,name,name from oraking2) t on s.id=t.id
*
ERROR at line 1:
ORA-00918: 未明確定義列
--使用where進行存在相同列名(name)時是成功的。如下:
SQL> select t.id from oraking1 s , (select id,name,name from oraking2) t where s.id=t.id;
        ID
----------
         3
         2
         1
--使用inner join進行相同列名(name)重新命名後是成功的。如下:
SQL> select t.id from oraking1 s inner join (select id,name,name as name1 from oraking2) t on s.id=t.id;
        ID
----------
         3
         2
         1
總結:在使用join時需要注意列不能重名。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26143577/viewspace-719702/,如需轉載,請註明出處,否則將追究法律責任。

相關文章