首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Oracle数据库中,ROWNUM和ROW_NUMBER有什么不同?

在Oracle数据库中,ROWNUM和ROW_NUMBER有什么不同?
EN

Stack Overflow用户
提问于 2008-10-06 14:47:46
回答 4查看 37.1K关注 0票数 26

ROWNUMROW_NUMBER有什么区别?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-06 14:56:31

ROWNUM是一个“伪列”,它为查询返回的每一行分配一个数字:

代码语言:javascript
复制
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是一个分析函数,它根据每行在一组行中的顺序为每行分配一个编号:

代码语言:javascript
复制
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
票数 42
EN

Stack Overflow用户

发布于 2012-07-18 17:47:49

除了答案中提到的其他差异之外,您还应该考虑性能。这里有一个非权威但非常有趣的报告,比较了不同的分页方法,其中比较了ROWNUMROW_NUMBER() OVER()的使用

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

票数 1
EN

Stack Overflow用户

发布于 2008-10-06 15:01:11

rownum是一个伪列,可以将其添加到任何select查询中,以便对返回的行进行编号(从1开始)。它们根据它们被标识为最终结果集的一部分的时间进行排序。(#ref)

row_number是一个分析函数,可用于按照row_number()函数规定的顺序对查询返回的行进行编号。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/174595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档