日期:2014-05-16  浏览次数:20928 次

关于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
  sele