クエリ Select * From Person Where rownum > 100 and rownum < 200
は空の結果セットを返します。これは、ROWNUM が取得時に行に番号を割り当てるためです。 WHERE
句は、ROWNUM に番号が割り当てられた後をフィルタリングします。 ROWNUM が 100 を超える行は、最初の 100 行がすでに処理され ROWNUM 値が割り当てられた後のみとみなされます。
Oracle 12c のトップ n 行制限機能は、ページネーションに対するより直接的なアプローチを提供します。 構文 Select ... FROM ... WHERE rownum BETWEEN lowerBound AND upperBound
は、指定された範囲内の行を直接選択し、サブクエリの必要性を排除します。
ROWNUM 列の表示を回避するには、外側のクエリの SELECT
リストに目的の列を明示的にリストします。あるいは、ビューを作成してクエリをカプセル化するか、SQL*Plus の NOPRINT
コマンドを使用して不要な出力を抑制します。
ROWNUM による正確なページネーションは、正しいクエリの構築にかかっています。 重要なのは、ページ間で一貫した行選択を保証するために、一意の識別子 (主キー) を使用して結果を順序付けることです。 ROWNUM による順序付け自体は FIRST_ROWS(N)
を無効にしませんが、一意の識別子を使用すると、意図した行の取得が保証されます。
以上がROWNUM は Oracle ページネーション クエリでどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。