利用Sql Server的top分页查询的通用构造方式

Sql Server中,假设一个查询sql为querySql,该sql为任意条件的组合,我们把它当作子查询结果表,可利用Sql Server的top来构造通用的分页查询sql

Java代码 复制代码
  1. if (pageInfo.getPageNum() == 1) {   
  2.       pagenatedSql = "select top " + pageInfo.pageSize + " * from (" + sql + ") as t1 " ;   
  3. }   
  4. else {   
  5.       pagenatedSql = "select top " + pageInfo.pageSize + " * from (" + sql + ") as t1 " +   
  6.             " where (t1." + indexKey + " > (select max(t3." + indexKey + ")" +    
  7.             " from (select top " + (pageInfo.pageNum - 1) * pageInfo.pageSize + " t2." + indexKey + " from (" + sql + ") as t2 order by t2." + indexKey + ") as t3" +   
  8.             " )) order by t1." + indexKey;   
  9. }  
if (pageInfo.getPageNum() == 1) {
      pagenatedSql = "select top " + pageInfo.pageSize + " * from (" + sql + ") as t1 " ;
}
else {
      pagenatedSql = "select top " + pageInfo.pageSize + " * from (" + sql + ") as t1 " +
            " where (t1." + indexKey + " > (select max(t3." + indexKey + ")" + 
            " from (select top " + (pageInfo.pageNum - 1) * pageInfo.pageSize + " t2." + indexKey + " from (" + sql + ") as t2 order by t2." + indexKey + ") as t3" +
            " )) order by t1." + indexKey;
}



其中pageInfo.getPageNum()为当前页号(从1开始);pageInfo.getPageSize()为每页行数;indexKey为表中索引列,通常为递增的主键。

第二种方式:
pagesize: 每页显示记录数
cureentpage:当前页数

select * from (   select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage   * from user_table   ORDER BY id ASC ) as aSysTable   ORDER BY id DESC ) as bSysTable   ORDER BY id ASC

 

 

From:

http://steve-gu.javaeye.com/blog/118314

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值