如果执行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: 选择列表中列的命名含糊
------------------------------
这是为什么呢,是不是对列名出现的次数有限制?请大家帮我解释一下,谢谢。

解决方案 »

  1.   

    不是对列名出现的次数有限制,而是列名不能有重复的名字,改成下面的方式:select deptno a, deptno 
          from emp order by deptno;
      

  2.   

    select deptno, deptno from emp t order by t.deptno
    如果没有指定table,order by会去解析select的列名,所以产生歧义
      

  3.   

    没有指定表名?那为什么select deptno from emp order by deptno就可以呢,order by 后面也不需要跟表名呀?
      

  4.   

    那就可以理解为,优先从返回列中获取
    order by是sql中最后执行的