0

我在创建程序时遇到了设计问题。

假设我必须使用同一行中其他列中的数据更新表中的所有行。说table1有 3 列AB并且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;

有没有办法通过操纵“一些查询”和“一些条件”来做到这一点?

4

1 回答 1

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 

SQL 小提琴

于 2014-07-01T18:36:24.297 回答