Dans une base de données Oracle, Quelle est la différence entre ROWNUM et ROW NUMBER?

Quelle est la différence entre ROWNUM et ROW_NUMBER?

19
demandé sur Mahi_0707 2008-10-06 18:47:45

5 réponses

ROWNUM est une "pseudocolumn" qui assigne un nombre à chaque ligne retournée par une requête:

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 est une fonction analytique qui attribue un nombre à chaque ligne selon son ordre dans un groupe de lignes:

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
37
répondu Tony Andrews 2008-10-06 14:56:31

A partir d'un peu de lecture, ROWNUM est une valeur automatiquement assignée par Oracle à un rowset (avant ordre en étant évalué, donc ne pas jamaisORDER BY ROWNUM ou un WHERE ROWNUM < 10 avec un