select rownum from orderTable where rownum between 1 and 200 ;
可以选择出行,
select rownum from orderTable where rownum between 100 and 200 ;
未选定行,能说一下为什么吗???

解决方案 »

  1.   

     rownum  在你生成列的时候才起作用,从1开始; between   100   and   200   还未生成数据,所以无显示
      

  2.   

    嵌套下就好了select * from (
    select   rownum rn   from   orderTable   where   rownum<=200)
    where rn>=100
      

  3.   

    一次查询出不来这样的结果必须依靠子查询select * from
    (select rownum num from orderTable where rownum between 1 and 200) t where t.num>100
      

  4.   

    select * from (select a.*,rownum rn from orderTable a where rownum <=200) b where b.rn>=100
      

  5.   

    orderTable中没有rownum列
    select * from (select   rownum   from   orderTable) as a   where   rownum   between   1   and   200 
      

  6.   

    select * from orderTable where rownum<=200 minus (select * from orderTable where rownum<=100);
      

  7.   

    select   *   from   orderTable   where   rownum <=200   minus   (select   *   from   orderTable   where   rownum <100);
      

  8.   

    ROW_NUMBER函数可以,不用嵌套。SELECT NO, NAME FROM (
         SELECT NO, NAME,
                ROW_NUMBER() OVER (ORDER BY NO) RNUM
         FROM ROWNUM_TEST
     ) WHERE RNUM BETWEEN 5 AND 10
      

  9.   

    至于LZ想问的原因,就因为rownum是一个伪列,一定会需要从1开始。
      

  10.   

    想问一下,这个rownum是在 order by前起作用 还是order by之后起作用?谢谢
      

  11.   

    rownum是在  order   by之后起作用? 你没order by就取rownum是按照主健排序的,没主健就随即的
      

  12.   

    自己来回答rownum是在 order by 之前起作用的其产生的过程就相当于 select + where 做 行选+列选 时,增加了一个临时列,并按照行选时的顺序为rownum赋值最后再做order by 排序
      

  13.   

    使用order by高效查询:
    select * from (
    select a.*,rownum num from (
    select * from 表名 order by 列名 desc
    ) a where rownum<=20
    ) where num>=10;ORDERY BY应该这样使用哦~
    蓝色的地方是以后用于传参数的地方,你可以把分页封装成一个JAVABEAN,传入原始SQL和需要获取的起始位置,这样的话应该可以提高代码的复用性吧。
    我刚刚开始学ORACLE,不怎么会,有误的地方还请大师们多多指点,谢谢了。