6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Db2 : FETCH FIRST n ROWSとOFFSET、およびLIMIT代替構文

Posted at

Db2は以前から、FETCH FIRST n ROWS ONLYをつけることにより、SELECTでn行までしか取得しないように限定する書き方ができました。

Db2 for LUW 11.1より、FETCH FIRSTの中にOFFSET節を指定して、スキップする行数を設定できるようになりました。

また、FETCH FIRST ... OFFSET節の代替構文として、LIMIT ... OFFSETも使用できるようになっています。

#FETCH FIRST節を使ったシンプルSQL

FETCH FIRST節はSELECTの中の様々な場所で使用することができますが、こちらはDb2のSAMPLEデータベースのEMPLOYEE表から5行のみを取り出すシンプルな例です。
(ここではORDER BY節がないため、順序は確定的ではありません。)

SELECT LASTNAME FROM EMPLOYEE FETCH FIRST 5 ROWS ONLY 
        
LASTNAME
---------------
STERN
PULASKI
HENDERSON
SPENSER
LUCCHESSI

  5 レコードが選択されました。

#FETCH FIRST節のOFFSETオプション

FETCH FIRST n ROWS ONLYにOFFSETキーワードを使用して、スキップする行数を指定することができます。

OFFSETキーワードのシンタックスです。

OFFSET n ROWS FETCH FIRST x ROWS ONLY

OFFSET n ROWSはFETCH FIRST x ROWS ONLYの前に置き、行を取得する前にスキップする行数を指定します。

この例は、EMPLOYEE表から最初の10行を取得します。(ORDER BY節がないため順序は確定されていません。)

SELECT LASTNAME FROM EMPLOYEE FETCH FIRST 10 ROWS ONLY

LASTNAME
---------------
HAAS
THOMPSON
KWAN
GEYERSPENSER
STERNLUCCHESSI
PULASKI
HENDERSON
SPENSER
LUCCHESSI
O'CONNEL

      10 レコードが選択されました。

OFFSET 0 ROWSは行をスキップしないという指定になります。

SELECT LASTNAME FROM EMPLOYEE OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY

以下の例は、5行をスキップし、5行を取得します。

SELECT LASTNAME FROM EMPLOYEE OFFSET 5 ROWS FETCH FIRST 5 ROWS ONLY

LASTNAME    
---------------
O'CONNEL
QUINTANAHENDERSON
NICHOLLASSPENSER
ADAMSONLUCCHESSI
PIANKA

      5 レコードが選択されました。

#LIMIT ... OFFSETの代替構文

Db2 11.1では、PostgreSQLやMySQLなど他のデータベース製品で使用されるSQLも簡単にDb2環境で実行できるようにする機能拡張が含まれており、FETCH FIRST ... OFFSET節の代替として、LIMIT ... OFFSETの代替構文も使用できるようになりました。

代替構文 同等の構文
LIMIT x FETCH FIRST x ROWS ONLY
LIMIT x OFFSET y OFFSET y ROWS FETCH FIRST x ROWS ONLY
LIMIT y,x OFFSET y ROWS FETCH FIRST x ROWS ONLY

#参考資料

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?