就是这个取6-10位数据
select * from ( select e.*,rownum rn from (select * from emp) e where rownum<10) where rn>6;如果要写成
select e.*,rownum rn from (select * from emp) e where rownum<10 and rn>6; 就会报错 
请高手解答一下为什么

解决方案 »

  1.   

    rn是rownum的别名,此时不能够使用rn,除非象
    select * from ( select e.*,rownum rn from (select * from emp) e where rownum<10) where rn>6;
    这样,再包一层。
      

  2.   

    from (select * from emp)

    from emp有什么不同?,为啥这样写呢
      

  3.   

    select * from ( select e.*,rownum rn from (select * from emp) e where rownum<10) where rn>6;
    //可以改成
    select * from ( select e.*,rownum rn from emp e where rownum<10) where rn>6;
    只能这样。
      

  4.   

    你需要详细了解一下ROWNUM的用法
      

  5.   

    rownum  伪列 在当前的层次是只能是rownum<10  在外面就可以 如你的第一个就对了
    6-10位数据
    select * from ( select e.*,rownum rn from (select * from emp) e where rownum<10) where rn>=6;
      

  6.   

    正解,和SQL Server 原理是一样的
      

  7.   

    建议楼主好好看看oracle基础知识,就能了解oracle的执行流程