当前位置: 代码迷 >> Oracle管理 >> 关于row_number() over的有关问题
  详细解决方案

关于row_number() over的有关问题

热度:87   发布时间:2016-04-24 04:21:18.0
关于row_number() over的问题
SELECT
a
,b
,c
               ,ROW_NUMBER() OVER (ORDER BY b, c, d, a) ROWNO
  FROM
    table
  ORDER BY
    a
    ,b
    ,c
    ,d;
如上,关于 ROW_NUMBER() OVER (ORDER BY...)有几个问题,求解答
1.ROW_NUMBER() 的order by是返回的是该字段在排序后的位置吗
2.在进行ROW_NUMBER() OVER操作时,和rownum有没有联系
3.ROW_NUMBER() 和rownum相比,效率如何
------解决方案--------------------
引用:
SELECT
a
,b
,c
               ,ROW_NUMBER() OVER (ORDER BY b, c, d, a) ROWNO
  FROM
    table
  ORDER BY
    a
    ,b
    ,c
    ,d;
如上,关于 ROW_NUMBER() OVER (ORDER BY...)有几个问题,求解答
1.ROW_NUMBER() 的order by是返回的是该字段在排序后的位置吗
2.在进行ROW_NUMBER() OVER操作时,和rownum有没有联系
3.ROW_NUMBER() 和rownum相比,效率如何

row_number() over()和rownum最大的区别在于前者可以进行pratition by.
例如:
with t as
 (select 1 id, 10 c1
    from dual
  union all
  select 1 id, 20 c1
    from dual
  union all
  select 2 id, 10 c1
    from dual
  union all
  select 4 id, 10 c1
    from dual
  union all
  select 4 id, 10 c1
    from dual
  union all
  select 4 id, 10 c1
    from dual)
select t.*, row_number() over(partition by id order by c1) from t;
其实这个才是row_number()over最大的作用
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

SELECT
a
,b
,c
               ,ROW_NUMBER() OVER (ORDER BY b, c, d, a) ROWNO
  FROM
    table
  ORDER BY
    a
    ,b
    ,c
    ,d;
如上,关于 ROW_NUMBER() OVER (ORDER BY...)有几个问题,求解答
1.ROW_NUMBER() 的order by是返回的是该字段在排序后的位置吗
2.在进行ROW_NUMBER() OVER操作时,和rownum有没有联系
3.ROW_NUMBER() 和rownum相比,效率如何

row_number() over()和rownum最大的区别在于前者可以进行pratition by.
例如:
with t as
 (select 1 id, 10 c1
    from dual
  union all
  select 1 id, 20 c1
    from dual
  union all
  select 2 id, 10 c1
    from dual
  union all
  select 4 id, 10 c1
    from dual
  union all
  select 4 id, 10 c1
    from dual
  union all
  select 4 id, 10 c1
    from dual)
select t.*, row_number() over(partition by id order by c1) from t;
其实这个才是row_number()over最大的作用

是不是也可以这样写
select t.* from t group by id order by c1

不一样。。row_number()over实现了按组单独排序并分配序列号。
------解决方案--------------------
rownum比较快
  相关解决方案