在 SQL Server 中只要使用 order by 語法指定排序的欄位後,就可以使用 fetch next 限制取得資料的筆數,也可以使用 offset 來跳過前面幾筆資料。
例如取得 Products 資料表的第 11 ~ 20 筆資料:
稍加整理就可以很輕鬆地達成分頁功能:
參考資料:
Microsoft.Learn - SELECT - ORDER BY clause (Transact-SQL)
Microsoft.Learn - FETCH (Transact-SQL)
例如取得 Products 資料表的第 11 ~ 20 筆資料:
select * from Products
order by id -- 使用 id 欄位排序,由小到大
offset 10 rows -- 跳過前 10 筆
fetch next 10 rows only -- 只顯示 10 筆
;
稍加整理就可以很輕鬆地達成分頁功能:
DECLARE @PageNumber INT = 2; -- 當前頁碼
DECLARE @RowsPerPage INT = 10; -- 每頁資料筆數
select *
from Products
order by id
offset (@PageNumber - 1) * @RowsPerPage rows
fetch next @RowsPerPage rows only;
參考資料:
Microsoft.Learn - SELECT - ORDER BY clause (Transact-SQL)
Microsoft.Learn - FETCH (Transact-SQL)
感謝教學~
回覆刪除