OFFSET FETCH 子句 (SQL Server Compact)

OFFSET-FETCH 子句為您提供一個選項,讓您只從結果集中擷取某一個結果視窗或頁面。OFFSET-FETCH 只能搭配 ORDER BY 子句使用。

語法

[ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n][<offset_fetch>] ] 

<offset_fetch> ::= {OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }    [FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY]}

引數

  • OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
    指定在開始從查詢運算式傳回資料列之前,要略過的資料列數目。OFFSET 子句的引數可以是大於或等於零的整數或運算式。您可以交換使用 ROW 和 ROWS。

  • FETCH { FIRST|NEXT } <資料列計數運算式> { ROW|ROWS } ONLY
    指定處理 OFFSET 子句之後,要傳回的資料列數目。FETCH 子句的引數可以是大於或等於一的整數或運算式。您可以交換使用 ROW 和 ROWS。同樣地,您也可以交換使用 FIRST 和 NEXT。

使用 OFFSET-FETCH 的限制

  • ORDER BY 會強制使用 OFFSET 和 FETCH 子句。

  • OFFSET 子句則強制搭配 FETCH 使用。您絕對不可以使用 ORDER BY … FETCH。

  • TOP 不可以在相同查詢運算式中與 OFFSET 和 FETCH 結合。

  • OFFSET/FETCH 資料列計數運算式可以是任何將傳回整數值的算術、常數或參數運算式。資料列計數運算式不支援純量子查詢。

範例

下列範例示範 OFFSET-FETCH 子句搭配 ORDER BY 的使用方式。

範例 1:略過已排序之結果集的前 10 個資料列,並傳回其餘資料列。

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS;

範例 2:略過已排序之結果集的前 10 個資料列,並傳回接下來的 5 個資料列。

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;