|
|
最初由 shiguibao 发布
[B]
SQL> update test set o =
2 (select count(distinct v) + 1 from test tmp
3 where tmp.v > test.v);
6 rows updated
SQL> select * from test;
V O
---------- ----------
2.8 5
22.8 1
11.8 3
17.8 2
8.8 4
17.8 2
还是有问题,这样一来统计的数就少了,原来有6条记录,结果的最大值才是5。 [/B]
这个等价于楼上的
update test set o=(select distinct r from (select v,dense_rank()over(order by v) r from test)t where t.v=test.v);
你想要的结果是这样的
update test set o=(select distinct r from (select v,rank()over(order by v) r from test)t where t.v=test.v); |
|