Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

SQLiteDatabase#queryでOFFSET句を指定する

個人用メモ。
たとえば、

SELECT * FROM sample ORDER BY add_date LIMIT 10

というSQLを実行する場合、SQLiteDatabase#queryの第8引数に"10"を指定しますが、

SELECT * FROM sample ORDER BY add_date LIMIT 10 OFFSET 20

という具合に、OFFSET句を指定したい場合は、

10 OFFSET 20

ではなく、

20,10

OFFSET・LIMITの順でカンマ区切りで指定する必要がある。あとから考えると、フツーにSQLの問題でしたorz
コードはこんな感じ。

SQLiteDatabase db = helper.getReadableDatabase();
Cursor csr = db.query("sample",
                null, null, null, null, null,
                "add_date",
                "20,10");

つか、

java.lang.IllegalArgumentException: invalid LIMIT clauses:LIMIT 10 OFFSET 20

とだけ出されても分からんわ。。。