我需要更新大表(ACCOUNTS)并根据自身更改列。
这是怎么做的?
此查询:
begin
UPDATE ACCOUNTS SET ACC = '1' where ACC IN ('3');
UPDATE ACCOUNTS SET ACC = '2' where ACC IN ('4');
end
仅更新4到2。
答案 0 :(得分:4)
对于较大的表,最好只执行一次更新。
您可以将以下两个更新合并为一个:
select * from ACCOUNTS;
A
-
1
2
3
4
BEGIN
update ACCOUNTS
set ACC = case when ACC = '3' then '1'
when ACC = '4' then '2' end
where ACC in ('3','4');
dbms_output.put_line('rows updated ' || SQL%ROWCOUNT);
END;
/
rows updated 2
select * from ACCOUNTS;
A
-
1
2
1
2
别忘了COMMIT
。