用其他重复列更新列

时间:2014-02-19 10:14:05

标签: sql oracle

我使用PL/SQL。我有这样一张桌子

a   |  b
---------
111 |
111 |
222 |
333 |
333 |
333 |
444 |
444 |

我希望使用updateb,结果变为

a   |  b
---------
111 |  1
111 |  2
222 |  1
333 |  1
333 |  2
333 |  3
444 |  1
444 |  2

怎么做?感谢。

修改

根据b的计数加1,a将从1开始。

2 个答案:

答案 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);

SQL Fiddle

答案 1 :(得分:1)

您可以使用以下SQL创建新表或视图:

select a.a,row_number() over (partition by a order by a) as b from table

直接更新无效,因为您的表中没有主要/唯一键。