RT

解决方案 »

  1.   

    order by 应该是先排序后根据序号加上rownum伪列。
      

  2.   

    这个不一定,应该是和oracle的计算是基于成本或者规则等因素有关吧。
      

  3.   

    如果rownum与order by子句处理同一层次上,则rownum先于order by 子句执行。如: select rownum,empno,ename from emp order by empno;
    这条SQL语句是先执行rownum,再执行order by 子句的。但如果rownum与order by 子句不在同一层次上,则按SQL语句的执行顺序执行。
      

  4.   

    SQL> select rownum,empno,ename from scott.emp order by ename;    ROWNUM      EMPNO ENAME
    ---------- ---------- ----------
            11       7876 ADAMS
             2       7499 ALLEN
             6       7698 BLAKE
             7       7782 CLARK
            13       7902 FORD
            12       7900 JAMES
             4       7566 JONES
             9       7839 KING
             5       7654 MARTIN
            14       7934 MILLER
             8       7788 SCOTT
             1       7369 SMITH
            10       7844 TURNER
             3       7521 WARD说明了什么呢,不明白,这样rownum不就没用了
      

  5.   

    rownum先于order by 执行,如果想rownum和order by一致,应该用inline view

    select rownum,empno,ename from(
    select empno,ename from scott.emp order by ename);