q986 发表于 2016-11-16 10:20:09

在DB2中分页查询的简单实现想法

  DB2 中怎么作分页查询
  简单的查询方式为:
  select a, b, c from (select a, b, c, rownumber() over(order by a asc) as rn from table_1 where 1=1) as a1 where a1.rn between 0 and 50
  以上  a  b  c 为表的字段 table_1 为表名,查询从第0条记录到第50条记录。
  但是必须每页记录下:
  开始查询的条件:条件一,条件二.....
  在开始查询时的所有记录数(总记录数,即满足条件的记录数)Count
  总页数 pageNumber
  当前页 nowPage
  每页记录数 pageRows
  // 计算一共有多少页
   pageNumber = ((Count % pageRows) == 0) ? (Count / pageRows) : ((Count / pageRows) + 1);
  // 如果是上一页 action = "prePage" 注意: 检查 当前页 > 1
   if ("prePage".equals(action)) {
    if (nowPage <= 1) {
     throw new InputException("已经是第一页!");
    }
    nowPage = nowPage - 1; // 当前页必须减 一
    beginRow = (nowPage - 1) * pageRows;
    endRow = nowPage  * pageRows;
   }
   
   // 如果是下一页 action = "nextPage" 注意: 检查 当前页 < 总页数
   if ("nextPage".equals(action)) {
    if (nowPage >= pageNumber) {
     throw new InputException("已经是最后一页!");
    }
    nowPage = nowPage + 1; // 当前页必须加 一
    beginRow = (nowPage - 1) * pageRows;
    endRow = nowPage * pageRows;
   }
  基本思路就是这些,还有很多细节的地方,今后再完善。
页: [1]
查看完整版本: 在DB2中分页查询的简单实现想法