查询EMP表中排在第6-9位置上的雇员:select  ename,sal from emp
where rownum >= 6 and rownum <=9;一直显示“未选定行”。请大家指点指点 错在哪啦?

解决方案 »

  1.   


    select * from (
    select ename,sal,rownum rn from emp
    where rownum <=9) s where s.rn >= 6;--下面的资料你也可以学习下
    --http://database.51cto.com/art/201106/270156.htm
      

  2.   

    rownum是一个伪列,不能使用>=,只能<=.但可以变化一下:select * from
    (select ename, sal, rownum as rn from emp)
    where rn >=6 and rownum <=9;
      

  3.   

    你rownum做为记录选取条件,可以选出数据.不过,如果要在不同时间多次查询,选出的结果可能是不同的.
      

  4.   

    rownum是在记录被选择后才生成的,从1开始。
      

  5.   

    rownum是伪列 先查出rownum  然后再查6-9 
    select * from (select ename,sal,rownum r from emp) where r between 6 and 9
      

  6.   

    rownum是标注查询结果集的,前提必须又返回集,即从0开始。
    应注意区分与rowid的用法。网上可以搜一下,解释很详细 
      

  7.   

    select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum < 9 ) where rn>6 最里面的select * from emp 查出所有的信息 然后将他做为一张表看待然后将伪列和表信息一起查出 select a1.*,rownum rn from (select * from emp) a1 在加入条件加入条件 where 的时候  要先 去掉 后面的信息 也就是 rownum < 9 在将查询结果看成一个表取 > 6的 信息