你记住一点:
rownum是一个伪列,它的产生是在查询之后,对每一个列按顺序分配的号,
除非你order by rownum desc,否则查询出来的rownum一定是从1开始的自然数而 select * from table where rownum>1 
或者 select * from table where rownum=2之类的语句,任何时候都不会得到返回结果的
因为出来的结果中如果不含rownum=1的记录,那就出不来

解决方案 »

  1.   

    有一种办法可以实现你的想法,不过只适用于数据量小的表——你可以使用差集:select * from table1 where rownum<=2000
    minus 
    select * from table1 where rownum<=1000
      

  2.   

    你的意识是:1、rownum是在表查询之后产生的,也就是说把rownum作为条件放在where后是不能避免全表扫描的??一样很慢。
    2、为何rownum=1的记录不包含在结果集中,结果集就出不来呢??
    3、所谓的rownum是记录的物理顺序的理解完全是错误的??
      

  3.   

    使用minus方法只适用于没有排序的查询