Oracle の ROWNUM 疑似列に加えて、次の代替手段を使用して行のシーケンス番号を取得できます。 1. サブクエリ (ネストされたサブクエリを使用) 2. 分析関数 (ROW_NUMBER() など)。 ; 3. シーケンス (新しく挿入された行用) 4. 一時テーブル (行番号を格納するための一時テーブルを作成することによる)。
他のメソッドを使用して Oracle の ROWNUM を置き換えます
Oracle では、ROWNUM 疑似列が結果で使用されますset 行のシーケンス番号を取得します。ただし、場合によっては、ROWNUM の使用に制限やパフォーマンスの問題が発生する可能性があります。したがって、次の代替案を検討できます。
1. サブクエリ
ネストされたサブクエリを使用して、メイン クエリから行番号を追加します。
<code class="sql">SELECT * FROM ( SELECT row_number() OVER (ORDER BY <sort_column>) AS rownum, <columns> FROM <table_name> ) AS subquery;</code>
2. 分析関数
ROW_NUMBER() 分析関数を使用して行番号を追加します:
<code class="sql">SELECT ROW_NUMBER() OVER (ORDER BY <sort_column>) AS rownum, <columns> FROM <table_name>;</code>
新規の場合。行を挿入した場合は、シーケンスを使用して一意の行番号を生成できます:
<code class="sql">CREATE SEQUENCE rownum_seq START WITH 1; INSERT INTO <table_name> (id, ..., rownum) VALUES (..., NEXT VALUE FOR rownum_seq); SELECT rownum, <columns> FROM <table_name>;</code>
行番号を保存するための一時テーブルを作成します:
<code class="sql">CREATE TEMPORARY TABLE rownum_temp ( rownum NUMBER, <columns> ); INSERT INTO rownum_temp (rownum, <columns>) SELECT row_number() OVER (ORDER BY <sort_column>), <columns> FROM <table_name>; SELECT rownum, <columns> FROM rownum_temp ORDER BY rownum;</code>
適切な代替方法の選択は、特定の要件とパフォーマンスの考慮事項によって異なります。サブクエリと分析関数は、比較的小さなデータ セットに効果的です。挿入時に行番号を生成する必要がある状況では、シーケンスと一時テーブルを選択することをお勧めします。
以上がOracleでrownumを置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。