[转][SQL Server]分页查询

方式一:使用 OFFSET/FETCH 子句(SQL Server 2012 及以上版本支持)

-- 假设 PageSize 表示每页的记录数,pageNumber 表示当前页码(从1开始)
DECLARE @PageSize INT = 10;
DECLARE @pageNumber INT = 3;

SELECT *
FROM table1
ORDER BY Id -- 或者按其他字段排序
OFFSET (@pageNumber - 1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;

方式二:使用 ROW_NUMBER() 函数

WITH CTE AS (
    SELECT *,
           ROW_NUMBER() OVER (ORDER BY Id) AS RowNum
    FROM table1
)
SELECT *
FROM CTE
WHERE RowNum BETWEEN (@pageNumber - 1) * @PageSize + 1 AND @pageNumber * @PageSize;

这两种方式都可以实现对 table1 表的分页查询,不过 OFFSET/FETCH 的方式更为简洁直观。

posted on 2024-03-11 09:59  z5337  阅读(4)  评论(0编辑  收藏  举报