為了在SQL中實作自訂分頁並從大型資料集中擷取特定數量的記錄,您需要使用跳過和取得功能。以下是使用SQL查詢實現此目的的方法示範。
查詢語句
您有一個查詢,它從包含論壇條目的表中檢索PostId,按PostId分組,並按每個帖子的最大DateMade排序。此查詢運作良好,但您希望在其中新增分頁功能。
解
對於SQL Server 2012以上版本
從SQL Server 2012開始,您可以使用OFFSET和FETCH NEXT子句輕鬆跳過和取得記錄。修改後的查詢如下圖所示:
<code class="language-sql">SELECT PostId FROM ( SELECT PostId, MAX(DateMade) AS LastDate FROM dbForumEntry GROUP BY PostId ) SubQueryAlias ORDER BY LastDate DESC OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;</code>
對於SQL Server 2008
在SQL Server 2008中,您可以使用ROW_NUMBER()為每筆記錄指派一個順序號,然後套用篩選器來選擇所需的記錄。以下是修改後的查詢:
<code class="language-sql">DECLARE @Start INT DECLARE @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 > @Start AND RowNumber <= @End;</code>
以上是如何透過SQL查詢實現分頁的Skip和Take功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!