我可是森森呢 2022-11-17 13:46 采纳率: 96.3%
浏览 18
已结题

SQLite如何在分页查询的同时返回总数

SQLite3进行分页查询,需要获取到总数
这样我好直接跳转到最后一页之类的,应该怎么写啊
用MySQL的方法好像不行

  • 写回答

1条回答 默认 最新

  • Check_Const 2022-11-22 11:55
    关注
     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可用limit2)ORACLE可用隐含的行号RowNum
    (3)MS SQL Server可用top,结合排序条件(order by3.模拟分页查询逻辑(较多人验证过效率还可以)
    (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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 已采纳回答 3月9日
  • 创建了问题 11月17日

悬赏问题

  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 qgcomp混合物线性模型分析的代码出现错误:Model aliasing occurred
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答