案例:
       今天做了个分页,起先以为 只要在区间就可以了,比如:
       select  *  from  tbl where rownum between  3 and 100;
       可是不管如何查询出来都没有数据

原因:
       由于对rownum的认识肤浅

分析:

      这种写法之所以行不通,是因为 ROWNUM 列只有在记录被取出或过滤时才会应用到记录上

      第一行在被取出时会被抛出,因为它的 ROWNUM 是1。然后,下一行被取出;它也会被抛出,因为它是新的“1”,以此类推,直到所有的行都被使用。这个查询不会返回任何记录。解决方法是在看到3到100之间的记录时必须先取出1到30行的记录

所以 如果 select  *  from  tbl where rownum between  1  and 100; 是正确, 因为刚好开始位置是从1 开始


解决:
      select  t.*  from  (slect  rownum rowno,...... where .....and rownum <=100)  t where t.rowno>=3

即封装两层,先过滤小于100 的,然后在把rownum伪列显示为真实列,在做条件查询