2012-02-12 9 views
0

私はLIMIT句で行をフェッチしようとしています。しかし、私が得ているのは、限界まですべての行です。私が実行している場合たとえば、次のように (これはQSqlQueryModelである)SQLiteの制限クエリは、開始行番号を無視します

QString queryFullTextSearch = "SELECT * FROM my_table LIMIT 20,40"; 
QSqlQueryModel::setQuery(queryFullTextSearch, queryDB); 

私は何を取得していますが、0から40までの行で、次の場合、私は私は何 、40から80にそれを実行します0から80までの行が得られます。

クエリの実行方法に問題はありますか?

+0

' limit'句が_always_疑わしいです。 – Mat

+0

私はで注文を追加しましたが、いいえ – user63898

答えて

1

あなたの構文が間違っている、してみてください:句by` `順序なし

SELECT * FROM my_table LIMIT 20 OFFSET 40 
+0

[this](http://www.sqlite.org/lang_select.html)によると、彼の構文は正しいです。 – lawicko

+0

はい、「OFFSET句を別にする代わりに、LIMIT句で2つのスカラ式をコンマで区切って指定することができます。この場合、最初の式はOFFSET式として使用され、2番目の式はLIMIT式として使用されます。 OFFSET句を使用する場合、2つの式のうちの2番目の式がOFFSETと最初のLIMITであるため、これは意図的です。これは他のSQLデータベースシステムとの互換性を最大化します。 –

+0

私はあなたの意見を持っていましたが、彼は自分が何をしているのかを知っていると思いました。彼のSELECTステートメントは20から60までの行を返すはずですが、OFFSET節は決してそこになかったので、代わりに0から40が得られます。それにもかかわらず、彼は 'LIMIT 40 OFFSET 20'を使用して、代替構文にもっと幸運を祈るかどうかを調べるべきです。 – lawicko

関連する問題