数据表分页查询

在 MSSQL(SQL Server)中,分页查询的 SQL 语句可以使用 OFFSETFETCH NEXT,或者 ROW_NUMBER() 方式来实现。

方法 1:使用 OFFSET ... FETCH NEXT (适用于 SQL Server 2012 及以上)

SELECT * 
FROM TableName
ORDER BY ColumnName
OFFSET (@PageIndex - 1) * @PageSize ROWS 
FETCH NEXT @PageSize ROWS ONLY;

说明

  • @PageIndex:当前页码(从 1 开始)。
  • @PageSize:每页显示的记录数。
  • ORDER BY ColumnName:必须有 ORDER BY,否则 OFFSET 不能使用。

方法 2:使用 ROW_NUMBER()(适用于 SQL Server 2005 及以上)

WITH CTE AS (
    SELECT 
        *, 
        ROW_NUMBER() OVER (ORDER BY ColumnName) AS RowNum
    FROM TableName
)
SELECT * 
FROM CTE 
WHERE RowNum BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;

 


xcoder使用的是这个方法

posted @ 2025-03-19 12:05  头号程序媛  阅读(23)  评论(0)    收藏  举报