クエリにおける SQLite の LIMIT と OFFSET を理解する
人気のリレーショナル データベースであるSQLite では、クエリによって返される行数を制限する 2 つの方法、LIMIT
と OFFSET
が提供されています。機能的には似ていますが、構文が異なるため、混乱が生じる可能性があります。
構文のバリエーション
最初の構文 LIMIT <skip>, <count>
は、結果セットの先頭から指定されたオフセット (count
) から開始して返す行数 (skip
) を指定します。
2 番目の LIMIT <count> OFFSET <skip>
では同じ結果が得られますが、パラメーターが異なる順序で表示されます。 count
行目から始まる skip
行を返します。
互換性とベストプラクティス
SQLite は、MySQL や PostgreSQL などの他のデータベース システムとの互換性の遺産として、両方の構文をサポートしています。 MySQL は両方を受け入れますが、PostgreSQL は LIMIT <count> OFFSET <skip>
形式のみをサポートします。
曖昧さを避けるために、SQLite では 2 番目の構文 (LIMIT <count> OFFSET <skip>
) を推奨します。 重要なのは、一貫した行選択を保証するために、この構文必ずとORDER BY
を併用することです。 ORDER BY
がないと、返される行の順序は予測できません。
具体例
「Animals」テーブルに対してこれらのクエリを調べてみましょう:
<code class="language-sql">SELECT * FROM Animals LIMIT 100 OFFSET 50</code>
これにより、51 行目から始まる 100 行が取得されます (OFFSET
は 0 から始まることに注意してください)。
<code class="language-sql">SELECT * FROM Animals LIMIT 100, 50</code>
このクエリは、構文が異なるにもかかわらず、行 51 から始まる 100 行という同じ結果を生成します。
重要なポイント
SQLite の LIMIT
句と OFFSET
句は、結果セット制御のための強力なツールですが、二重構文のため混乱を招く可能性があります。 明確にして予測可能な結果を得るには、一貫して LIMIT <count> OFFSET <skip>
を ORDER BY
と組み合わせて使用してください。
以上がSQLite の LIMIT 句と OFFSET 句はどのように異なり、どの構文を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。