[轉][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 的方式更爲簡潔直觀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章