SQL Server 中使用 OFFSET 和 FETCH 實作分頁
SQL Server 沒有 MySQL 或 SQL 中 LIMIT
子句的直接等效項。但是,它提供了使用 OFFSET
和 FETCH
子句實現類似功能的替代方法。
OFFSET 和 FETCH
要使用 OFFSET
和 FETCH
實現分頁,請依照下列步驟操作:
ORDER BY
子句依所需順序排序資料。 OFFSET
子句指定要跳過結果集開頭多少行。 FETCH
子句指定跳過偏移行後要傳回的行數。 範例:
<code class="language-sql">SELECT * FROM sys.databases ORDER BY name OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;</code>
此查詢將跳過前 5 行 (OFFSET 5 ROWS
) 並傳回接下來的 5 行 (FETCH NEXT 5 ROWS ONLY
)。
舊版 SQL Server 版本的替代方案:
對於 2012 年之前的 SQL Server 版本,存在效率較低的替代方案:
缺少 LIMIT 的原因
SQL Server 中缺少 LIMIT
子句主要是因為歷史和架構原因。 Microsoft 設計 SQL Server 時著重於高效能和資料完整性,而 OFFSET
和 FETCH
機制被認為在分頁方面更有效率和更通用。然而,在最近的版本中,SQL Server 已更新為包含 ROW_NUMBER()
和其他最佳化,使得 OFFSET
和 FETCH
與 LIMIT
更具可比性。
以上是如何在SQL Server中使用OFFSET和FETCH實現分頁?的詳細內容。更多資訊請關注PHP中文網其他相關文章!