【SQL】LIMIT句が使用不可時の対処法
こんにちは、上村です。
最近、苦戦したことを紹介します。
事象
「SQLを使用してデータを先頭から10件抽出したい」という場面がありました。
SELECT * FROM ライブラリ/ファイル LIMIT 0, 10
上記のコードを実行すると、バージョンによって異なる結果になりました。
- V5R4:「トークン LIMIT は正しくない」 とエラーが表示される
- V7R2:抽出結果が表示される
対処
以下のようにSQL文を変更後、抽出結果が表示されるようになりました。
- 元の抽出結果に行番号を連番で採番する
- 元の抽出結果に別名を付ける(←忘れるとエラーになります)
- 行番号で抽出条件を指定する
SELECT * FROM ( SELECT ROWNUMBER() OVER(ORDER BY フィールド1) AS 行番号, フィールド1, フィールド2, フィールド3 FROM ライブラリ/ファイル ORDER BY フィールド1 ) 別名 WHERE 行番号 BETWEEN 0 AND 10
先輩が過去に投稿しているこちらの記事に、LIMIT句が使えるようになった経緯と詳しい説明が書いておりますので、ぜひご覧ください。