select ename from (select * rownum n from (select * from emp order by ename) where rownum<20)where n>10;
和这句select ename from (select * rownum n from (select * from emp order by ename) where rownum<20)where rownum;
还有这句select ename from (select * from (select * from emp order by ename) where rownum<20)where rownum>10;这三句是一个意思吧  rownum在select不用非要写出吧???

解决方案 »

  1.   


    --你的语句应有问题吧,执行就会有错
    select ename from (select ename,rownum n from (select * from emp order by ename) where rownum<20) where n>10;--取出按ename排序后的第11到19条数据select ename from (select ename,rownum n from (select * from emp order by ename) where rownum<20)where rownum>10;--取不出,此句结果和select ename from emp where rownum>10一样,因rownum是从第1个开始查找,检测第1个是否大于10,不大于,查第二个,此时第二条的
    rownum还是1,因此直接结束都没>10的记录select ename from (select * from (select * from emp order by ename) where rownum<20)where rownum>10;--和第二个一样,没结果
      

  2.   

    三句都有语法错误,LZ执行一下应该很清楚才对..
    主要错误是
    1.select * ROWNUM n FROM 有错,不用rownum直接select * FROM 就好,若要用则select ROWNUM rn,t.* FROM TABLE t
    2.ROWNUM>10要报错,这个最好了解一下rownum的概念..
      

  3.   

    前面两句执行都报错
    唉。
    你没在PL/SQL里执行?感觉楼主应该是对rownum不理解吧 多多学习一下Oracle基础