如题

解决方案 »

  1.   

    两种实现
    第一种用伪列rownum做子查询
    假定每页20条记录
    第一页:
    select cola, colb, colc from tab_name where rownum <= 1*20
    第二页:
    select cola, colb, colc from 
    (select cola, colb, colc, rownum as num from tab_name where rownum <= 2*20)
    where num > 1*20
    第N页:
    select cola, colb, colc from 
    (select cola, colb, colc, rownum as num from tab_name where rownum <= N*20)
    where num > (N-1)*20
    第二种用伪列做集合运算minus
    select cola, colb, colc from tab_name where rownum <= N*20
    minus
    select cola, colb, colc from tab_name where rownum <= (N-1)*20
    第一种大概高效一些,针对实际测试一下吧。
      

  2.   

    select col1,col2,... from
    (select col1,col2,..., rownum as num from tab_name where rownum <= N*pagesize)
    where num > (N-1)*pagesize
      

  3.   

    在Oracle数据库上都是这么做的,如果有排序的话,必须先排序后分页。
      

  4.   

    对啊!rownum分页是很实用的啦!minus效率好像低点!如果要排序的话必须和rownum分开,先排好序再用rownum,不然rownum就会乱掉。