web-dev-qa-db-ja.com

DB2での行のフェッチ

DB2では(バージョン9.7を使用)、次のクエリを使用してテーブルの最初の10行を選択できることを知っています。

SELECT * 
FROM myTable
ORDER BY id
FETCH FIRST 10 ROWS ONLY

しかし、たとえば、行11から20を取得するにはどうすればよいですか?主キーまたはIDを使用して私を助けることはできません...

前もって感謝します!

14
David Caissy

状態名、略語などを含むテーブルから行を取得するサンプルクエリを次に示します。

SELECT *
FROM (
   SELECT stabr, stname, ROW_NUMBER() OVER(ORDER BY stname) AS rownumber
   FROM states
   WHERE stcnab = 'US'
) AS xxx
WHERE rownumber BETWEEN 11 AND 20 ORDER BY stname

編集:ORDER BYは、クエリの実行間で行番号が一貫していることを保証するために必要です。

14
Benny Hill

MYSQL互換性も使用できます。 MYSのベクトル互換性をアクティブにして、クエリでLimitとOffsetを使用するだけです。

db2set DB2_COMPATIBILITY_VECTOR=MYS
db2stop
db2start
1
AngocA