SQLite3进行分页查询,需要获取到总数
这样我好直接跳转到最后一页之类的,应该怎么写啊
用MySQL的方法好像不行
1. MS SQL Server查询测试
DECLARE @v_rowsPerPage int --每页行数
DECLARE @v_TotalPages int --总页数
DECLARE @v_rowCurrent bigint --当前记录行
--DECLARE @v_PageCurrent int --当前页号
set @v_rowsPerPage=100 --假设每页100条
select @v_tCount=sum(1) from CheckTableName --测试查记录数
select @v_TotalPages=Ceiling(@v_tCount*1.0/@v_rowsPerPage) --测试计算总页数
print '记录数='+cast(@v_tCount as varchar)
print '总页数='+cast(@v_TotalPages as varchar)
2. 依应用场景,不同数据库可使用不同方式控制对应页行数
(1)MySQL可用limit
(2)ORACLE可用隐含的行号RowNum
(3)MS SQL Server可用top,结合排序条件(order by)
3.模拟分页查询逻辑(较多人验证过效率还可以)
(1) MS SQL Server的ROW_NUMBER()
select top 每页行数 * from
(
select top (页码*1每页行数) ROW_NUMBER() OVER (order by id) AS RowNum,
t.*
FROM CheckTableName t
-- where 条件
) t
where RowNum between (页码-1)*每页行数+1 AND 页码*每页行数
order by RowNum
(2)使用主键排序
--假设主键为ListNo
select top 每页行数 * FROM CheckTableName
where --条件1 and
ListNo >(
select isnull(Max(ListNo),0)
FROM
(
select top ((页码-1)*每页行数) ListNo
FROM CheckTableName --测试表名
--where 条件1 --与前面条件1相同
order by ListNo
) t
)
order by ListNo