我使用PL/SQL
。我有这样一张桌子
a | b
---------
111 |
111 |
222 |
333 |
333 |
333 |
444 |
444 |
我希望使用update
列b
,结果变为
a | b
---------
111 | 1
111 | 2
222 | 1
333 | 1
333 | 2
333 | 3
444 | 1
444 | 2
怎么做?感谢。
修改
根据b
的计数加1,a
将从1开始。
答案 0 :(得分:3)
尝试此查询:
update Table1 t1 set t1.b =
(SELECT r FROM (select ROWID rid,row_number() over(PARTITION BY a ORDER BY a) r
from Table1) t2 where t1.ROWID = t2.rid);
答案 1 :(得分:1)
您可以使用以下SQL创建新表或视图:
select a.a,row_number() over (partition by a order by a) as b from table
直接更新无效,因为您的表中没有主要/唯一键。