如何使用不同的记录集更新oracle数据库中的多行。
答案 0 :(得分:2)
它不漂亮,但你可以用MERGE INTO,使用UNION的SELECT ... FROM DUAL作为合并源。
假设:
create table writer (
id integer primary key,
name varchar2(255) not null
)
你可以这样做:
merge into writer dst
using (
select 1 as id, 'Edward Luttwak' as name from dual
union
select 2 as id, 'Iain Sinclair' as name from dual
) src
on (dst.id = src.id)
when matched then update set dst.name = src.name
when not matched then insert (dst.id, dst.name) values (src.id, src.name);
对于要更新的每一行,在子查询中为联合添加一个术语。如果您知道行肯定是更新,并且从不插入,则可以删除整个when matched
子句。