質問

ROWNUMROW_NUMBERの違いは何ですか?

役に立ちましたか?

解決

ROWNUMは<!> quot; pseudocolumn <!> quot;です。クエリによって返された各行に番号を割り当てます:

SQL> select rownum, ename, deptno
  2  from emp;

    ROWNUM ENAME          DEPTNO
---------- ---------- ----------
         1 SMITH              99
         2 ALLEN              30
         3 WARD               30
         4 JONES              20
         5 MARTIN             30
         6 BLAKE              30
         7 CLARK              10
         8 SCOTT              20
         9 KING               10
        10 TURNER             30
        11 FORD               20
        12 MILLER             10

ROW_NUMBERは、行グループ内の順序に従って各行に番号を割り当てる分析関数です。

SQL> select ename, deptno, row_number() over (partition by deptno order by ename) rn
  2  from emp;

ENAME          DEPTNO         RN
---------- ---------- ----------
CLARK              10          1
KING               10          2
MILLER             10          3
FORD               20          1
JONES              20          2
SCOTT              20          3
ALLEN              30          1
BLAKE              30          2
MARTIN             30          3
TURNER             30          4
WARD               30          5
SMITH              99          1

他のヒント

少し読むと、ROWNUMはOracleによって行セットに自動的に割り当てられる値です(ORDER BYが評価される前に、 ever ORDER BY ROWNUMを使用したり、WHERE ROWNUM < 10を< ORDER BY)。

ROW_NUMBER()サブクエリまたはパーティションによって返される結果セットに行番号を割り当てるための関数である。

回答で言及した他の違いとは別に、パフォーマンスも考慮する必要があります。ここには権限のないが非常に興味深いレポートがあり、さまざまなページネーションの方法を比較しています。その中で、 ROW_NUMBER()OVER()と比較して ROWNUM を使用しています:

http://www.inf.unideb.hu/~gabora/ pagination / results.html

rownum は、任意の選択に追加できる疑似列です。クエリ、返される行の番号(1から始まる)。それらは、最終結果セットの一部であると識別された時期に従って順序付けられます。 ( #ref

row_number はアナリティクスの関数であり、 row_number()関数で指定された順序で、クエリによって返された行に番号を付けるために使用されます。

Rownumは1で始まり、条件評価の結果がtrueになった後に増加します。 したがって、rownum&gt; = 1はテーブル内のすべての行を返します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top