FirebirdでLIMIT
MySQLのLIMITのように、特定の行数分を取得する
SELECT FIRST 20 * FROM TBL ORDER BY ID;
のようにする事で、テーブルTBLのすべてのフィールドをIDの昇順に先頭から20行分を取得する事ができる。
SELECT FIRST 20 SKIP 10 * FROM TBL ORDER BY ID;
とSKIPを利用すると、先頭から10行分飛ばして20行を取得する。
これは、2.0以降のバージョンでは非推奨となっている。
2.0以降では、ROWSを使う。
SELECT * FROM TBL ORDER BY ID ROWS 20;
で先頭から20行を取得する。
SELECT * FROM TBL ORDER BY ID ROWS 10 TO 30;
とすると10行目から30行目までを取得する。
つまり、先頭から10行分飛ばして、20行分を取得する。先頭から9行分飛ばして、21行分を取得する。
参考文献
Firebird 徹底入門
Firebird日本ユーザー会 木村明治・はやしつとむ・坂井恵
翔泳社
第4章 (4.5.1) P122-P129
| 固定リンク
「データベース」カテゴリの記事
- 【Firebird】 Unsupported on-disk structure for file xxx.fdb; found 32779, support @4?.@5?.(2014.02.18)
- データベースで検索に失敗する(2013.07.09)
- Firebird unsupported on-disk structure(2013.07.03)
- dbExpressでMySQLに接続 RAD Studio 2010(2012.01.25)
- Firebirdでテーブル一覧を得る(2011.10.06)
コメント
ありがとうございます。
確かに、「10行目から30行目までを取得する」ということと、「10行分飛ばして20行分を取得する」では、違う範囲になってしまいますね。
偉そうに、「つまり」とか書いて間違ったことを書いていますね(笑)
直しておきました。
投稿: TagoSuck | 2014-03-05 13:32
古い記事に対して&細かいことで申し訳ありません。
FireBird limit でググるとこちらの記事が一番上に表示されるので、ちょっと突っ込みです。
> SELECT * FROM TBL ORDER BY ID ROWS 10 TO 30;
>
> とすると10行目から30行目までを取得する。
> つまり、先頭から10行分飛ばして、20行分を取得する。
この例では「先頭から9行分飛ばして、21行分を取得する。」が正しいと思います。
先頭から10行分飛ばして、20行分を取得する場合は、下記のようになります。
SELECT * FROM TBL ORDER BY ID ROWS 11 TO 30;
投稿: | 2014-03-05 09:58