有人可以帮助我......
我必须为每个" Costumer"创建一个非顺序ID的迭代器来更新"版本"列。
我需要一个光标或其他东西?
我可以得到一些帮助吗?
示例:
ID COSTUMER VERSION
12 ANNA 1
24 ANNA 4
25 ANNA 5
60 ANNA 11
我想将版本更正为顺序
答案 0 :(得分:0)
您可以使用以下代码:
@myarray = []
begin
for r in ( select id, row_number() over (partition by name order by version) as rn
from costumer
)
loop
update costumer
set version = r.rn
where id = r.id;
end loop;
end;
/
就在那里,因为我假设您希望序列从1开始为ANNA'然后再从1开始为客户' JANE'如果没有,你可以删除该部分。
答案 1 :(得分:0)
以下是通过单个MERGE语句执行此操作的方法:
MERGE INTO costumer tgt
USING (SELECT ID,
costumer,
VERSION,
ROWID row_id,
row_number() OVER (PARTITION BY costumer ORDER BY VERSION) new_version
FROM costumer) src
ON (tgt.rowid = src.rowid)
WHEN MATCHED THEN
UPDATE SET tgt.version = src.new_version;