说明:实现分页功能,我每页要显示的数据是3条(pageSize),我现在要查询第1页(pageNow)的数据,这种情况下下面两条sql都是对的.但是改变了pageSize和pageNow的值的话,比如现在要查第2页的3条数据,只有第二条sql是对的(这句是对的),第一条sql查询不出来......
<1>、select * from (select temp1.*,rownum rn from (select * from goodsinfo where goodstype='香港电影' order by goodsid) temp1 where rownum>=pageSize*(pageNow-1)+1) temp2 where rn<=pageSize*pageNow
<2>、select * from (select temp1.*,rownum rn from (select * from goodsinfo where goodstype='香港电影' order by goodsid) temp1 where rownum<=pageSize*pageNow) temp2 where rn>=pageSize*(pageNow-1)+1;

解决方案 »

  1.   

    rownum 的问题,可以写rownum>0或rownum >= 1,其他的》就不可以了
    看看这个帖子吧
    http://topic.csdn.net/u/20110919/15/7e20df4c-28de-44d3-b15e-f3610559f947.html
      

  2.   

    呵呵,自己试了一下,我自己得出的结论和楼上链接的应该差不多
    既然都已经是三重套了
    干脆就
    select * FROM (SELECT b.*,ROWNUM n from  (select * from abc t ORDER by vv) b ) c 
           WHERE n BETWEEN 4 AND 6;
      

  3.   


    你的第1条SQL是有问题的,错误的位置就是“where rownum>=pageSize*(pageNow-1)+1) temp2 
    ”,rownum这个伪例的值必须是从1开始,所以rownum >= N的查询条件除非N等于1,否则该条件的计算结果永远为FALSE。所以你的第1条SQL只有查询第1页能得到结果。