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;
相关推荐
wgzrmlrm746 分钟前
如何解决ORA-28040没有匹配的验证协议_sqlnet.ora版本兼容设置
jvm·数据库·python
一江寒逸6 分钟前
零基础从入门到精通MySQL(附加篇):面试八股文全集
数据库·mysql·面试
数厘12 分钟前
2.6MySQL库表操作指南(电商数据分析专用)
数据库·mysql·数据分析
需要点灵感13 分钟前
SQL Server 存储过程语法整理
数据库·sql
刘~浪地球15 分钟前
数据库与缓存--分库分表实战指南
网络·数据库·缓存
Mr_Xuhhh20 分钟前
深入Java多线程进阶:从锁策略到并发工具全解析
前端·数据库·python
数厘26 分钟前
2.5可视化工具与 MySQL 连接配置及基础操作
数据库·mysql
沃尔威武44 分钟前
性能调优实战:从火焰图定位到SQL优化的全流程
android·数据库·sql
数厘1 小时前
2.7SQL 四大分类:理解与避坑
数据库·sql
亮子AI1 小时前
【PostgreSQL】推荐几个PostgreSQL管理工具
数据库·postgresql