利用Sql Server的top分页查询的通用构造方式
2009-08-25 14:49
459 查看
Sql Server中,假设一个查询sql为querySql,该sql为任意条件的组合,我们把它当作子查询结果表,可利用Sql Server的top来构造通用的分页查询sql:
Java代码
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
Java代码
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;
}
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
相关文章推荐
- 利用Sql Server的top分页查询的通用构造方式
- 利用Sql Server的top分页查询的通用构造方式
- SSH框架利用注解方式实现根据多条件动态分页查询图书信息(传对象)
- SQL Server分页查询的几种方式
- SQL server 2008 分页(利用top关键字进行分页)
- SQL Server 分页查询通用存储过程
- SQL Server 利用row_number()实现表的分页查询
- SQL分页查询,纯Top方式和row_number()解析函数的使用及区别
- SQL Server通用分页存储过程:利用SQL Server未公开的存储过程实现
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
- 通用分页显示查询存储过程(SQL Server)
- SQL Server 分页查询通用存储过程(只做分页查询用)
- SQL Server 分页查询通用存储过程(只做分页查询用)
- SQL Server 2005中利用临时表和@@RowCount提高分页查询存储过程性能
- SQL Server 2000通用分页查询存储过程(可指定返回字段,查询条件)
- 数据查询分页的几种实现方式
- SQL Server中利用SET ROWCOUNT来高性能地进行分页
- Sql Server 分页查询
- jQuery liger ui ligerGrid 打造通用的分页排序查询表格(提供下载)