2012/09/28
SQLiteのSELECT文のLIMIT,OFFSET指定
SQLiteでLIMITとOFFSETを指定したSELECT文を実行しようとすると、何度かエラーになりました。「SQLiteが認識できるクエリー言語」というサイトを見ると、原因がわかりました。指定順序が問題でした。


SQLiteの場合、
SELECT field1, field2 FROM table WHERE field1 = 'hoge' ORDER BY id LIMIT 10 OFFSET 5
のようにLIMITの後にOFFSETを書くのが正しい。ちなみにPostgreSQLでは(私はもっぱらVer8.2だが)LIMIT,OFFSETの順序はどちらが先でもよい。
変り種はFirebird 1.5(最近のバージョンはほとんど知りません)。LIMIT,OFFSETの代わりに、それぞれFIRST,SKIPと書くのも変わっていますが、記述位置まで他とは違い、
SELECT FIRST 10 SKIP 5 field1, field2 FROM table WHERE field1 = 'hoge' ORDER BY id
とSELECTの直後に書きます。末尾ではダメ。またFIRST,SKIPはこの順でないとダメ。変わったところが多いDBです。
SELECT field1, field2 FROM table WHERE field1 = 'hoge' ORDER BY id LIMIT 10 OFFSET 5
のようにLIMITの後にOFFSETを書くのが正しい。ちなみにPostgreSQLでは(私はもっぱらVer8.2だが)LIMIT,OFFSETの順序はどちらが先でもよい。
変り種はFirebird 1.5(最近のバージョンはほとんど知りません)。LIMIT,OFFSETの代わりに、それぞれFIRST,SKIPと書くのも変わっていますが、記述位置まで他とは違い、
SELECT FIRST 10 SKIP 5 field1, field2 FROM table WHERE field1 = 'hoge' ORDER BY id
とSELECTの直後に書きます。末尾ではダメ。またFIRST,SKIPはこの順でないとダメ。変わったところが多いDBです。
スポンサーサイト
コメント
コメントの投稿
トラックバック
トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1332-3a0853a9