我想根据条件更新或插入Oracle Table。
考虑到表中有2列(如id和name),一个或多个名称具有相同的id。在这种情况下,我想检查ID和名称(如1,'买方'),如果它存在,那么我想将名称'买方'更新为'服务提供商'。否则我只想插入值(1,'服务提供商')。
我通过Merge尝试了这个,但是它将id 1的所有名称列更新为“Service Provider”。
merge into party_type p
using (select 1 party_id, 'Buyer' party_type from dual) t
on (t.party_id = p.party_id)
when matched then
update set party_type = 'Service Provider'
when not matched then
insert (party_id,party_type) values(1,'Service Provider');
表中的可用数据:
1 Buyer
1 Buyer Agent
1 Vendor
提前致谢。
答案 0 :(得分:1)
您需要加入两个列
merge into party_type p
using (select 1 party_id, 'Buyer' party_type from dual) t
on (t.party_id = p.party_id and t.party_type = p.party_type)
when matched then
update set party_type = 'Service Provider'
when not matched then
insert (party_id,party_type) values(1,'Service Provider');