我用了如下的语法:
select * from tablename where rownum>=10 and rownum<20 order by colname;结果无法取出第10条到19条记录。请问该如何写SQL才正确呢?

解决方案 »

  1.   

    select * from tablename where rownum<20 
    minus
    select * from tablename where rownum<11 ;
      

  2.   

    但好象加了order by条件后无效啊。
      

  3.   

    select * from(
    select * from tablename where rownum<20 
    minus
    select * from tablename where rownum<10
    )order by colname;
      

  4.   

    http://expert.csdn.net/Expert/topic/2566/2566792.xml?temp=.4474451
      

  5.   

    select * from 
      ( 
        select t1.*, rownum rnum
            from (select * from tablename order by colname) t1
            where rownum <=19
      ) where rnum >= 10
      

  6.   

    谢谢,终于搞定了。不过oracle确实可以针对这种需求给出一种更简单的解决办法。否则一个简单的SQL逻辑,被弄得长篇大论,片面地复杂化了。
      

  7.   

    不过我后来试验了 leecooper0918 的做法,并没有成功。
      

  8.   

    不可能吧? 
     我说的那种方法是效率比较高的,至少比MINUS的效率高。
      

  9.   

    参考: 
      http://expert.csdn.net/Expert/topic/2507/2507539.xml?temp=.9630243