创建程序时遇到设计问题。
假设我必须使用同一行中其他列中的数据更新表中的所有行。假设table1
有3列A
,B
和C
,我需要将所有行更新为C=A+B
。所以我可以使用:
update table1 set C=A+B;
但我需要使用以下内容来做到这一点:
merge tab1e1 using (some query) on (some condition)
when matched update
C=A+B
when not matched
null;
有没有办法通过操纵'some query'和'some condition'来做到这一点?
答案 0 :(得分:1)
我真的不明白为什么您要使用合并而不是更新,但如果您真的需要,可以使用dual
创建using
子句和on
条件始终为真:
merge into table1
using (select null from dual)
on (1 = 1)
when matched then update set c = a + b;
使用一些示例数据:
create table table1 (a number, b number, c number);
insert into table1 values (1, 2, null);
insert into table1 values (3, 4, null);
insert into table1 values (5, 6, null);
merge into table1
using (select null from dual)
on (1 = 1)
when matched then update set c = a + b;
3 rows merged.
select * from table1;
A B C
---------- ---------- ----------
1 2 3
3 4 7
5 6 11