SQL Server自訂分頁:OFFSET/FETCH與ROW_NUMBER()方法
SQL分頁用於從資料集檢索有限數量的記錄,通常用於在使用者介面上分頁顯示結果。本文的目標是實現一個查詢的分頁功能,該查詢檢索貼文及其最新的條目。
SQL Server 2012及以後版本可以使用OFFSET
和FETCH NEXT
關鍵字實作分頁。以下查詢示範如何使用這些關鍵字進行分頁:
<code class="language-sql">SELECT PostId FROM ( SELECT PostId, MAX(Datemade) AS LastDate FROM dbForumEntry GROUP BY PostId ) AS SubQueryAlias ORDER BY LastDate DESC OFFSET 10 ROWS -- 跳过10行 FETCH NEXT 10 ROWS ONLY; -- 获取接下来的10行</code>
對於SQL Server 2012之前的版本,需要採用不同的方法。一種方法是使用ROW_NUMBER()
函數為記錄指派行號,然後使用WHERE
子句篩選所需的行:
<code class="language-sql">DECLARE @Start INT, @End INT; SELECT @Start = 10, @End = 20; WITH PostCTE AS ( SELECT PostId, MAX(Datemade) AS LastDate, ROW_NUMBER() OVER (ORDER BY PostId) AS RowNumber FROM dbForumEntry GROUP BY PostId ) SELECT PostId, LastDate FROM PostCTE WHERE RowNumber BETWEEN @Start AND @End; -- 获取第10到20行</code>
這種方法為早期版本的SQL Server提供了實現分頁的方法,可讓您控制顯示的記錄數量,並方便大型資料集的導覽。
以上是如何在 SQL Server 中使用 OFFSET/FETCH 和 ROW_NUMBER() 實作自訂分頁?的詳細內容。更多資訊請關注PHP中文網其他相關文章!