« ネットブックでChromeが読込み状態のまま | トップページ | SELECT時に連番を付ける »

2010-05-04

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

|

« ネットブックでChromeが読込み状態のまま | トップページ | SELECT時に連番を付ける »

データベース」カテゴリの記事

コメント

ありがとうございます。
確かに、「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

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/26178/48266832

この記事へのトラックバック一覧です: FirebirdでLIMIT:

« ネットブックでChromeが読込み状態のまま | トップページ | SELECT時に連番を付ける »