DB/SQL

【DB2】指定した数だけレコードを読み飛ばす(OFFSETオプション)

OFFSETオプション

DB2は指定した数だけレコードを読み飛ばすためには、以前ではROW_NUMBER()関数が用いられてきました。DB2 バージョン 11.1よりSQL標準のOFFSETがサポートされました。そこで以前から使用されているROW_NUMBER()とOFFSETの使用方法と比較についてみていきましょう。

ペンちゃん
ペンちゃん
今回はDB2の指定した数だけレコードを読み飛ばすOFFSETオプションについてお勉強しましょう!

ROW_NUMBER()関数の使い方

ROW_NUMBER()は、over句でソート順を指定してwhere句では取得する範囲を限定するために使用します。

ROW_NUMBER()の構文

ROW_NUMBER()の構文は以下の通りです。

ROW_NUMBER()の使用例

たとえば、数字(number)とその読み方(yomikata)が格納されているyomikatatableの5~10番目を取得するには以下のようにします。

結果は以下の通りです。

OFFSETオプションの使い方

OFFSETオプションの構文

OFFSETオプションは何レコード取得するかを指定する「FETCH FIRST m ROWS ONLY」とともに使用されます。

nレコード飛ばしてmレコード取得するためには以下の構文を使用します。

OFFSETの使用例

たとえば、数字(number)とその読み方(yomikata)が格納されているyomikatatableの5~10番目を取得するには4レコード飛ばして6レコード取得すればよいので以下のようになります。

結果は以下の通りです。

まとめ

ROW_NUMBER()関数が用いられてきました。Db2 バージョン 11.1よりサポートされているOFFSETと以前から使用されているROW_NUMBER()の使用方法と比較についてみてみました。ぜひ使ってみてください。

ペンちゃん
ペンちゃん
今回はDB2の指定した数だけレコードを読み飛ばすOFFSETオプションについてお勉強しました!