帮忙看看这条SQL语句

redcoconut 2008-08-02 09:41:23
如果执行select deptno
from emp order by deptno;
结果正常。
但执行 select deptno, deptno
from emp order by deptno;
就显示:
------------------------------
select deptno, deptno from emp order by deptno
*
第 1 行出现错误:
ORA-00960: 选择列表中列的命名含糊
------------------------------
这是为什么呢,是不是对列名出现的次数有限制?请大家帮我解释一下,谢谢。
...全文
322 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
QingT26 2010-11-02
  • 打赏
  • 举报
回复
不加ordry by 是可以的
oracledbalgtu 2008-08-02
  • 打赏
  • 举报
回复
不是对列名出现的次数有限制,而是列名不能有重复的名字,改成下面的方式:

select deptno a, deptno
from emp order by deptno;


[Quote=引用楼主 redcoconut 的帖子:]
如果执行select deptno
from emp order by deptno;
结果正常。
但执行 select deptno, deptno
from emp order by deptno;
就显示:
------------------------------
select deptno, deptno from emp order by deptno
*
第 1 行出现错误:
ORA-00960: 选择列表中列的命名含糊
--------------------…
[/Quote]
fosjos 2008-08-02
  • 打赏
  • 举报
回复
那就可以理解为,优先从返回列中获取
order by是sql中最后执行的
redcoconut 2008-08-02
  • 打赏
  • 举报
回复
没有指定表名?那为什么select deptno from emp order by deptno就可以呢,order by 后面也不需要跟表名呀?
fosjos 2008-08-02
  • 打赏
  • 举报
回复
select deptno, deptno from emp t order by t.deptno
如果没有指定table,order by会去解析select的列名,所以产生歧义

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧