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;
相关推荐
l1t7 小时前
DeepSeek总结的MariaDB 的 DuckDB 存储引擎
数据库·mariadb
tiancaijiben7 小时前
阿里云VMware服务完全对接指南:从环境准备到混合云生产级应用
数据库
Curvatureflight8 小时前
MySQL 深分页越来越慢?从 LIMIT OFFSET 改成游标分页
数据库·oracle
tiancaijiben8 小时前
阿里云函数计算FC如何实现网站的定时任务与自动化
数据库·oracle·dba
xfhuangfu8 小时前
Oracle 19c 多租户体系架构介绍
数据库·oracle·架构
java1234_小锋8 小时前
请描述 Spring Boot 的启动流程,包括 SpringApplication 的初始化和 run 方法的核心步骤。
java·数据库·spring boot
qq_谁赞成_谁反对8 小时前
甲方IT的成长之路--nginx实战--2604
服务器·数据库·nginx
云水一下8 小时前
从零开始学 PHP 系列(六):MySQL 数据库与 PHP 交互——让数据真正“住”进服务器
数据库·mysql·php
fofantasy8 小时前
NSK LH25FL 升级至 NH25EM 技术规格指南
服务器·网络·数据库·经验分享·规格说明书