Oracle では、rownum は Oracle によって導入された仮想列です。クエリの実行時にのみ作成されます。クエリによって返される行の総数を制限し、クエリから返される行の数を割り当てるために使用されます。番号は常に 1 から始まります。同様に、rownum にテーブル名をプレフィックスとして付けることはできません。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
rownum については、Oracle システムがクエリから返された行に順番に割り当てる番号です。最初に返された行には 1 が割り当てられ、この疑似フィールドは、クエリによって返される行の総数を制限するために使用できますが、rownum にテーブルの名前をプレフィックスとして付けることはできません。
rownum は、Oracle によって導入された仮想列です。
この仮想列は物理的に存在せず、クエリ中にのみ構築されます。疑似列は通常、自由に割り当てられ、ユーザーが変更することはできません。
特徴
rownum には次の主な特徴があります:
1) rownum はどのテーブルにも属しません。
2) rownum の存在の前提は、まず結果テーブルです。
3) rownum は常に 1 から始まります。
4) rownum は通常、
5) ページング クエリに rownum を使用するには、rownum を実際の列に変換し、rownum に対してクエリを実行する必要があります。
2. 仕組みの原理
rownum の使い方は奇妙に思えるかもしれませんが、仕組みの原理を理解していれば、実際には非常に簡単です。
最初に簡単な実験を行います。デュアル テーブルからすべてのフィールドを取り出し、rownum を取り出します。
次の記述方法を使用すると: t.rownum
この方法で実行すると、01747 エラーが報告されます:
実際には、rownum フィールドはデュアル テーブルに存在しないため、t.rownum 形式は使用できません。
正しい書き方は次のとおりです。
したがって、rownum は仮想列であり、どのテーブルにも属しません。
では、この仮想列はどこから来たのでしょうか。理解を容易にするために、簡単な実験を行っています。
次のように、合計 10 個のレコードを持つ単純なテーブル test_ljb があります。
rownum を追加します。
結果は次のとおりです。わかりやすく、10 個のレコードを選択します。rownum は 1 から 10 です。
給与フィルター条件を追加します。
結果は次のとおりです。3 つのレコードが選択され、rownum は 1 ~ 3 です。
注意してください。 2 番目の結果テーブル rownum に対応する従業員は最初の結果テーブルに対応しません。
例: 最初のテーブルの rownum が 1 の場合、それは Arvin に対応し、2 番目のテーブルは Oracle に対応します。
理由は次のとおりです。
rownum は結果セットに追加される疑似列、つまり、結果セットが最初に見つかった後に追加される列であるためです。
簡単に言えば、rownum は条件を満たす結果のシーケンス番号です。常に 1 から始まるため、選択した結果が 1 をスキップして 1 より大きい他の値を持つことは不可能です。
つまり、rownum は動的であり、新しい結果セットに従ってリアルタイムで変化します。
推奨チュートリアル: 「Oracle チュートリアル 」
以上がOracleでのrownumの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。