MS SQL Server 中的 Offset-Fetch


Offset-Fetch 是 MS SQL Server 中的一個功能。它有助於從結果集中檢索行的子集。它包含兩個元件:OFFSET 和 FETCH。OFFSET 子句指定要跳過結果集開頭多少行。FETCH 子句確定要檢索的行數。

語法

SELECT column1, column2, ...
FROM table
ORDER BY column
OFFSET {integer_value} {ROWS | ROWS ONLY}
FETCH {FIRST | NEXT} {integer_value} {ROWS | ROWS ONLY} ONLY;

語法的解釋

SELECT column1, column2, ...

指定要從表中選擇的列。

FROM table

指定要從中檢索資料的表。

ORDER BY column

定義結果集應按其排序的列。

OFFSET {integer_value} {ROWS | ROWS ONLY}

指定要跳過結果集開頭多少行。{integer_value} 表示要跳過的行數。

FETCH {FIRST | NEXT} {integer_value} {ROWS | ROWS ONLY} ONLY

指定在偏移量之後要檢索的行數。{integer_value} 表示要檢索的行數。

注意

  • OFFSET 子句必須與 ORDER BY 子句一起使用。

  • OFFSET 值應為非負整數。

  • FETCH 子句可以互換使用 FIRST 或 NEXT 關鍵字。

  • {ROWS | ROWS ONLY} 子句指定是否在語法中包含“ROWS”或“ROWS ONLY”。兩者等效。

示例

讓我們探索一些示例,以瞭解如何在 MS SQL Server 中使用 Offset-Fetch

示例 1:簡單分頁

考慮一個名為“Customers”的表,其中包含“CustomerID”和“CustomerName”列。要按 CustomerID 排序獲取前 10 位客戶,可以使用以下查詢

SELECT CustomerID, CustomerName
FROM Customers
ORDER BY CustomerID
OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY;

示例 2:帶有排序和過濾的分頁

在此示例中,我們想要檢索客戶的第二頁,按 CustomerName 排序,其中 CustomerName 以“A”開頭。可以使用以下查詢

SELECT CustomerID, CustomerName
FROM Customers
WHERE CustomerName LIKE 'A%'
ORDER BY CustomerName
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

示例 3:跳過行

編寫一個查詢以檢索所有客戶,除了前五個。OFFSET 子句允許我們跳過所需數量的行

SELECT CustomerID, CustomerName
FROM Customers
ORDER BY CustomerID
OFFSET 5 ROWS;

結論

MS SQL Server 中的 Offset-Fetch 是用於高效資料檢索和分頁的工具。它簡化了獲取特定資料範圍的過程。查詢變得更加簡潔並提高了效能。透過將 Offset-Fetch 整合到您的資料庫查詢中,您可以最佳化資料檢索、提高應用程式響應能力並增強使用者體驗。

Offset-Fetch 可用於 MS SQL Server 2012 及更高版本。它的靈活性和易用性。對於使用 SQL Server 的開發人員和資料庫管理員來說,它是一個寶貴的功能。它使他們能夠輕鬆處理大型資料集並輕鬆實現分頁。

更新於: 2023-05-18

6K+ 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告