方式一:使用 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 的方式更爲簡潔直觀。