定义变量 total:记录总数 ,Pnum:每页记录数,page:页码(初始值为1)。
假设total=100,pnum=10
当前要显示的第3页(page=3)的记录(21-30):sql语句可以这样写:
select * from table where Rownum<page*pnum;
minus//除去
select * from table where Rownum<(page-1)*pnum;
注意:
不能写成:
select * from table where Rownum>(page-1)*pnum and Rownum<page*pnum;

解决方案 »

  1.   

    单用数据库也行
    有个用过的办法,有问题,但是还可以顶一下
    select * from table,(
    select primarykey from (select primarykey,rownum id1 from table where rownum<n*20) where id1>(n-1)*20) tableres
    where table.primarykey=tableres.primarykey所谓的问题就是oracle不能在子查询里面排序,有些功能这种方法就无法实现了,如果哪位大虾有改进办法或更好的办法,请告知。:)
      

  2.   

    单用数据库也行
    有个用过的办法,有问题,但是还可以顶一下
    select * from table,(
    select primarykey from (select primarykey,rownum id1 from table where rownum<n*20) where id1>(n-1)*20) tableres
    where table.primarykey=tableres.primarykey所谓的问题就是oracle不能在子查询里面排序,有些功能这种方法就无法实现了,如果哪位大虾有改进办法或更好的办法,请告知。:)
    oicq: 1766598
    mail: [email protected]
      

  3.   

    代cxgTommy回答:
    -----------------------------------------------------------------------
    单用数据库也行,有个用过的办法,有问题,但是还可以顶一下
    select * from table,(
    select primarykey from (select primarykey,rownum id1 from table where rownum<n*20) where id1>(n-1)*20) tableres
    where table.primarykey=tableres.primarykey
    所谓的问题就是oracle不能在子查询里面排序,有些功能这种方法就无法
    实现了,如果哪位大虾有改进办法或更好的办法,请告知。
    :)
    oicq: 1766598
    email: [email protected]