ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于在join中出现ORA-00918: 未明确定义列的解决办法

关于在join中出现ORA-00918: 未明确定义列的解决办法

原创 Linux操作系统 作者:YallonKing 时间:2012-03-28 11:24:50 0 删除 编辑
/*关于在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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-08-07

  • 博文量
    72
  • 访问量
    246023