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;
相关推荐
哆啦A梦15885 小时前
Springboot整合MyBatis实现数据库操作
数据库·spring boot·mybatis
Zzzzmo_5 小时前
【MySQL】JDBC(含settings.xml文件配置/配置国内镜像以及pom.xml文件修改)
数据库·mysql
FirstFrost --sy6 小时前
MySQL内置函数
数据库·mysql
2401_879693876 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
reembarkation6 小时前
光标在a-select,鼠标已经移出,下拉框跟随页面滚动
java·数据库·sql
eggwyw6 小时前
MySQL-练习-数据汇总-CASE WHEN
数据库·mysql
星轨zb6 小时前
通过实际demo掌握SpringSecurity+MP中的基本框架搭建
数据库·spring boot·spring security·mp
treacle田7 小时前
达梦数据库-配置本地守护进程dmwatcher服务-记录总结
数据库·达梦数据库·达梦数据库local数据守护
wyt5314297 小时前
Redis的安装教程(Windows+Linux)【超详细】
linux·数据库·redis
CeshirenTester7 小时前
从数据库到结构化用例:一套可落地的测试智能体架构
数据库·架构