ホームページ  >  記事  >  データベース  >  Oracleでページネーションする方法

Oracleでページネーションする方法

PHPz
PHPzオリジナル
2023-05-12 09:23:0614659ブラウズ

Oracle は、SQL 言語標準を完全にサポートする、広く使用されているデータベース管理システムです。多くのシナリオでは、データの管理と表示を容易にするために、クエリ結果をページに表示する必要があります。次に、この記事では、Oracle がページング操作を実行する方法を紹介します。

1. ページングには ROWNUM を使用します

Oracle では、返された結果セットの各行を一意の値として識別できる ROWNUM 関数を提供しています。値には 1 から始まる番号が付けられます。 。この関数には次の特徴があります。

  1. 戻り結果には、データ行の行番号を記録するために使用される ROWNUM 列が含まれます。
  2. ROWNUM の計算ルールは、ユーザー指定の WHERE 条件と ORDER BY ソートの後に、条件を満たす最初の N 行のデータが返されたときにカウントを開始することです。
  3. 値チェックを 1 つだけ実行して修飾されたレコード行を返すことができ、連続クエリ ページング操作には使用できません。

次に、ROWNUM 関数を使用してデータ ページング操作を実行できます。具体的な実装手順は次のとおりです:

  1. クエリ SQL ステートメントを記述し、データ結果を指定しますページングする必要があるセット。
  2. クエリ結果セットに基づいて ROWNUM 関数を使用し、クエリする行数と開始行数を指定します。

例:

SELECT FROM (SELECT A., ROWNUM RN FROM (SELECT * FROM user_data ORDER BY user_id) A WHERE ROWNUM = 1;

上記の SQL ステートメントでは、サブクエリ ステートメントを使用して user_data テーブルのすべてのデータをクエリし、user_id フィールドに従って並べ替えています。最後に、クエリ結果セットに基づいて ROWNUM 関数を使用し、クエリ結果セットで返される行数を 20 行に制限します。上記の SQL ステートメントを使用した結果は、行 1 から行 20 までのデータ レコードです。

2. ページングには OFFSET...FETCH を使用する

ROWNUM ページング メソッドの制限に対応して、Oracle はバージョン 12c 以降、新しいページング メソッド、つまり OFFSET FETCH 挿入構文を提供しています。 ROWNUM 関数と比較した場合、OFFSET FETCH 構文の特徴は次のとおりです。

  1. は行番号に依存せず、ON (OFFSET はオフセットを指します) と LIMIT で指定された処理順序の値に依存します。 value (FETCH はフェッチされた行数を指します) を使用して結果セットを取得します。
  2. ページング データを継続的にクエリできるため、大量のデータに適しています。
  3. OFFSET FETCH 構文を使用したクエリ結果は、WHERE ステートメントおよび ORDER BY ステートメントの影響を受けません。

具体的な使用方法は次のとおりです。

SELECT * FROM user_data ORDER BY user_id OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY;

上記SQL文の場合, OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY 構文は、指定されたオフセットが行 0 であり、20 行のデータ レコードが取得されることを示します。

概要:

Oracle では、ROWNUM 関数と OFFSET FETCH 構文という 2 つのページング データ クエリ方法を提供しています。 ROWNUM 関数は、データ量が少なく、ページング操作を 1 回だけ実行する必要がある状況に適しています。 OFFSET FETCH 構文は、データ量が多く、複数のページングを継続的にクエリする必要がある状況に適しています。

以上がOracleでページネーションする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Oracle 接続の削除次の記事:Oracle 接続の削除