sql2008 数据库分页语句

sql 复制代码
CREATE PROCEDURE Proc_GetBillPage
    @PageIndex INT,
    @PageSize INT
AS
BEGIN
    SET NOCOUNT ON;
    
    SELECT 
        Id, 账单号, 金额, 交易时间, TotalCount
    FROM (
        SELECT 
            ROW_NUMBER() OVER(ORDER BY Id DESC) AS RowNum,
            COUNT(*) OVER() AS TotalCount,
            Id, 账单号, 金额, 交易时间
        FROM 账单表
        WHERE 状态 = '有效'
    ) AS TempTable
    WHERE RowNum BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;
END;
GO

-- 调用存储过程
EXEC Proc_GetBillPage @PageIndex = 2, @PageSize = 10;

带总条数的分页(前端分页需总页数)

实际开发中通常需要返回「当前页数据 + 总条数」,可通过 COUNT(*) OVER() 实现(无需额外查询):

sql 复制代码
DECLARE @PageIndex INT = 2;
DECLARE @PageSize INT = 10;

SELECT 
    -- 分页数据
    Id, 账单号, 金额, 交易时间,
    -- 总条数(所有符合条件的记录数,整页数据中该值相同)
    TotalCount
FROM (
    SELECT 
        ROW_NUMBER() OVER(ORDER BY Id DESC) AS RowNum,
        COUNT(*) OVER() AS TotalCount, -- 计算总条数
        t.Id, t.账单号, t.金额, t.交易时间
    FROM 账单表 t
    WHERE t.交易时间 >= '2026-01-01'
) AS TempTable
WHERE TempTable.RowNum BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;
相关推荐
jiayou641 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤2 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区3 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1773 天前
《从零搭建NestJS项目》
数据库·typescript
加号34 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏4 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐4 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再4 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest4 天前
数据库SQL学习
数据库·sql
jnrjian4 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle