Quelle est la différence entre ROWNUM
et ROW_NUMBER
?Dans une base de données Oracle, quelle est la différence entre ROWNUM et ROW_NUMBER?
Répondre
ROWNUM est un « pseudo-colonne » qui attribue un numéro à chaque ligne renvoyé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 numéro à chaque ligne en fonction de sa commande 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
d'un peu de lecture, ROWNUM est une valeur attribuée automatiquement par Oracle à un ensemble de lignes (avant ORDER BY en cours d'évaluation, donc ne jamaisORDER BY ROWNUM
ou utilisez un WHERE ROWNUM < 10
avec un ORDER BY
).
ROW_NUMBER() semble être une fonction permettant d'attribuer des numéros de lignes à un ensemble de résultats renvoyé par une sous-requête ou une partition.
rownum est une pseudocolonne qui peut être ajoutée à n'importe quelle requête de sélection, pour numéroter les lignes retournées (en commençant par 1). Ils sont classés en fonction du moment où ils ont été identifiés comme faisant partie du jeu de résultats final. (#ref)
row_number est une fonction d'analyse, qui peut être utilisée pour numéroter les lignes renvoyées par la requête dans un ordre mandaté par la fonction row_number().
-1 pour "Ils sont numérotés dans l'ordre dans lequel les lignes sont retournées". Pas vrai - ils sont classés en fonction du moment où ils ont été identifiés comme faisant partie du jeu de résultats final, donc c'est avant une clause ORDER BY –
En dehors des autres différences mentionnées dans les réponses, vous devriez également considérer la performance. Il y a un non-autorité, mais très intéressant rapport ici, en comparant divers moyens de pagination, parmi lesquels l'utilisation de ROWNUM
par rapport à ROW_NUMBER() OVER()
:
ROWNUM commence par 1 ..increases après l'état évalué les résultats true . Ainsi rownum> = 1 renvoie toutes les lignes du tableau
- 1. Quelle est la différence entre dict() et {}?
- 2. quelle est la différence entre:.! et: r !?
- 3. Quelle est la différence entre = et: =
- 4. Quelle est la différence entre latin1_general_ci et utf8_bin dans MYSQL
- 5. ORACLE ROWNUM
- 6. Quelle est la différence entre Int et Integer dans Scala?
- 7. Quelle est la différence entre DOCUMENT_URI et URI_REQUEST dans SSI?
- 8. Quelle est la différence entre rediriger et rendre dans CakePHP?
- 9. Quelle est la différence entre rediriger et transférer dans Symfony?
- 10. Quelle est la différence entre bcc32 et bcc32ide dans Borland?
- 11. Quelle est la différence entre memset et memcpy dans C
- 12. Quelle est la différence entre include et extend dans Ruby?
- 13. Quelle est la différence entre AddConcreteType et TheDefaultIsConcreteType dans StructureMap?
- 14. Quelle est la différence entre% Q et% {} dans ruby?
- 15. Quelle est la différence entre utf8_general_ci et utf8_unicode_ci dans MySql?
- 16. Quelle est la différence entre // et /// dans Visual Studio?
- 17. Quelle est la différence entre -I et -L dans makefile?
- 18. Dans ASP.Net, quelle est la différence entre <% = et <% #
- 19. Quelle est la différence entre% c et% C dans printf?
- 20. Quelle est la différence d'API PL/SQL entre Oracle Express Edition (XE) et Standard Edition (SE)?
- 21. Quelle est la différence entre String et nvarchar (5000) dans SQL?
- 22. Quelle est la différence entre TAggregateField.IsNull et (TAggregateField.Value = Null)
- 23. Quelle est la différence entre IContainer et IUnityContainer de Prism?
- 24. Quelle est la différence entre this.click() et $ (this) .click()?
- 25. Quelle est la différence entre lockless et non-bloquant?
- 26. Quelle est la différence entre load (fn) et ready (fn)
- 27. Quelle est la différence entre un assistant et un partiel?
- 28. Quelle est la différence entre SqlCommand.CommandTimeout et SqlConnection.ConnectionTimeout?
- 29. Quelle est la différence entre Page.IsPostBack et Page.IsCallBack?
- 30. Quelle est la différence entre $ (document) .ready (function() et (function() $
par ordre est correct, par exemple, select * from (choisir a, b, c de l'ordre de foo par d) où rownum <10 – Ron
@Ron: essayer. Vous découvrirez à la dure qu'il prend les 10 premiers résultats de l'ensemble des résultats, puis les commande. – Powerlord
@Powerlord: si nous utilisons une requête interne alors rownum sera appliqué sur le résultat de la requête interne – Ali786