我错了,上面的方法行不通,只能用minus来作

解决方案 »

  1.   

    select ... from ( select table1.*,rownum rm from table1 order by CreateDate ) where rm between 10000 and 20000;
      

  2.   

    为什么行不通?不会是因为ORACLE的版本太低不支持子查询排序吧。如果是那样你可以用group by来代替order by呀。
      

  3.   

    读取第二次
    select * from ( select * from table1 order by CreateDate ) where rownum <= 20000 and rownum > 10000;
    这样不正确.
    select * from(select rownum id,table1.* from ( select * from table1 order by CreateDate ) where rownum <= 20000) where  id > 10000;
    以前讨论过这个问题,这样比minus要快的多.
      

  4.   

    写错了一个词,
    select * from(select rownum id,table1.* from ( select * from table1 order by CreateDate ) where id <= 20000) where  id > 10000;
      

  5.   

    同意bzszp(SongZip),查查以前的帖子,好象今天的就有专门讨论这个的。
      

  6.   

    SQL> select * from a1 order by bbb desc;BBB
    ----------
    105
    104
    103
    102
    101 jlandzpa的好像有问题,排序后的rownum号也变化了.
    SQL> select  rownum id,a1.* from a1 order by bbb desc;       ID BBB
    --------- ----------
            5 105
            4 104
            3 103
            2 102
            1 101SQL> select * from(select rownum id,a.* from (select * from a1 order by bbb desc) a
      2  where rownum<5) where id>2;       ID BBB
    --------- ----------
            3 103
            4 102导致结果不正确.