目次

SQL Server 2008 以降で結果レコードセットの指定した位置から指定した個数を取り出す - OFFSET FETCH の利用 - SQL Server

SQL Server 2008 以降ではOFFSET FETCH句を利用すると簡単に結果レコードセットの指定した位置から指定した個数のレコードを取り出せます。

書式

ORDER BY 句にオプションの形で記述します。
ORDER BY (列名) OFFSET (オフセットレコード数) ROWS FETCH NEXT (取得レコード数) ROWS ONLY
ORDER BY (列名) DESC OFFSET (オフセットレコード数) ROWS FETCH NEXT (取得レコード数) ROWS ONLY
ROWSはROWと書いても同じ動作になります。また、FETCH NEXT はFETCH FIRSTと記述しても同じ動作になります。

構文

ORDER BY order_by_expression
    [ COLLATE collation_name ] 
    [ 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
    ]
}

以下のSQLはContentsテーブルをregisterdateで逆順にソートし、40件目から10件レコードを取り出すます。
SELECT * FROM contents ORDER BY registerdate DESC OFFSET 40 ROWS FETCH NEXT 10 ROWS ONLY

以下のSQLはtagテーブルをnameでソートし、100件目から20件レコードを取り出すます。
SELECT * FROM tag ORDER BY name OFFSET 100 ROWS FETCH NEXT 20 ROWS ONLY
SQL Server 2008以前の方法と比較すると非常にシンプルなSQLで実行できます。
このページのキーワード
  • SQL Server 2008 以降で結果レコードセットの指定した位置から指定した個数を取得する - OFFSET FETCH の利用
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2017-02-26
作成日: 2014-08-25
iPentec all rights reserverd.