oracle中要选择中间n条记录该咋办阿?
我用了两种方式都不行,
1  select * from (select * from tablename where rownum<=20 order by tablename.id desc) a
        where rownum<=10  order by tablename.id;
    (我用的oracle8i,用between 10 and 20不能查处记录,是怎么回事,也就是只要rownum不是从1 
     开始都查不出来,用上面的方法查出来的结果也不正确)  
2  select * from tablename where rownum<20 minus 
        select * from tablename where rownum<10;
     (查出来的结果数跟单独查第一个select语句和第二个select语句之差不相等)
究竟是怎么回事啊,该怎么写?哪位仁兄帮个忙,谢了先

解决方案 »

  1.   

    是先生成所有rownum 然后才排序,所以你得到的结果不是你想要的结果 如果是用asc排序是正确的
      

  2.   

    select * from (select c_tsxx.*,rownum as my_rownum from ( select * from  ghx.c_tsxx t order by t.regidate DESC ) c_tsxx where rownum<= 20 ) where my_rownum>=10;
      

  3.   

    楼主讲的有道理,rownum本身就是一个伪列,所以要先order by排序.