看下面sql语句,我想用 rw 来实现从n-m的截取
select * from(select times,pages,rownum rw from layouts) where times='20090105' order by pages asc;结果是:
 times    pages  rw
20090105  A001    96
20090105  A002    97
20090105  A003    98
.
.为什么rw不是从1开始的?以至于我在where后面用 rw>=10 and rw<=20的时候没有值

解决方案 »

  1.   

    解析:
    1、“为什么rw不是从1开始的?”
    select times,pages,rownum rw from layouts
    出来的结果集一定是
     times pages rw
    XXXXXXXX XXXX 1
    XXXXXXXX XXXX 2
    XXXXXXXX XXXX 3
    ...
    20090105 A001 96
    20090105 A002 97
    20090105 A003 98
    ...然后你再times='20090105',结果集里面rw当然只有是满足条件的结果了。2、“以至于我在where后面用 rw>=10 and rw<=20的时候没有值”
    这个修改一下,将times='20090105'放到子查询中就可以了。
    select * from(select times,pages,rownum rw from layouts where times='20090105') 希望对你有所帮助
      

  2.   

    因为这里按pages排序了,所以rw并不是从1开始,rownum是在orderby之前赋予的伪列
      

  3.   


    where times='20090105'  说明满足你条件的记录是从95开始的
      

  4.   

    楼主还是没有明我在1楼说的,给你个彻底的答案吧:
    select * from(select times,pages,rownum rw from layouts where times='20090105' order by pages asc) where rw>=10 and rw<=20
    此例在Oracle中测试通过
      

  5.   


    同意这哥们说的,而且后面的times='20090105' 也会影响查询结果的。