在本教學中,將學習如何使用SQL Server OFFSET FETCH
子句來限制查詢返回的行數。OFFSET
和FETCH
子句是ORDER BY
子句的選項。 它們用於限制查詢返回的行數。
以下是OFFSET
和FETCH
子句的語法:
ORDER BY column_list [ASC |DESC]
OFFSET offset_row_count {ROW | ROWS}
FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY
在上面語法中,
OFFSET
子句指定在開始從查詢返回行之前要跳過的行數。offset_row_count
可以是大於或等於零的常量,變數或參數。FETCH
子句指定在處理OFFSET
子句後要返回的行數。offset_row_count
可以是大於或等於1
的常量,變數或標量。OFFSET
子句是必需的,而FETCH
子句是可選的。 此外,FIRST
和NEXT
是同義詞,因此可以互換使用它們。
以下圖中說明了OFFSET
和FETCH
子句:
請注意,必須將OFFSET
和FETCH
子句與ORDER BY
子句一起使用。 否則將收到錯誤消息。OFFSET
和FETCH
子句比實現TOP
子句更適合實現查詢分頁解決方案。
SQL Server OFFSET和FETCH示例
下麵將使用示例資料庫中的products
表進行演示。
以下查詢返回products
表中的所有產品,並按其價格和名稱對產品進行排序:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price,
product_name;
執行上面示例查詢語句,得到以下結果 -
要跳過前10
個產品並返回其餘產品,請使用OFFSET
子句,如以下語句所示:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price,
product_name
OFFSET 10 ROWS;
執行上面示例查詢語句,得到以下結果 -
要跳過前10
個產品並選擇接下來的10
個產品,請使用OFFSET
和FETCH
子句,如下所示:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price,
product_name
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
執行上面示例查詢語句,得到以下結果 -
要獲得前10
個最貴的產品,請使用OFFSET
和FETCH
子句,如下所示:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price DESC,
product_name
OFFSET 0 ROWS
FETCH FIRST 10 ROWS ONLY;
執行上面示例查詢語句,得到以下結果 -
在此示例中,ORDER BY
子句按價格按降序對產品進行排序。 然後,OFFSET
子句跳過零行,FETCH
子句從列表中獲取前10
個產品。
在本教學中,學習了如何使用SQL Server OFFSET FETCH
子句限制查詢返回的行數。
上一篇:
SQL Server數據查詢
下一篇:
SQL Server連接表