11、oracle merge into用法

oracle merge into用法

merge into使用对于更新同一张表或字段相同的值时,直接替换字段的值,使用效率更高

使用场景:存在的数据进行更新,不存在的数据进行

语法

此处更新的表为tgt表,src表作为更新的条件,on后面的条件无法作为set的值
MATCHED:作为匹配on条件时,执行下面的操作

not MATCHED:不匹配on条件时,执行下面的操作

merge into [tgt]
using [src]
on [tgt.id = src.id and tgt.name = src.name]
where matched
then [update sql]
where not matched
then [insert sql]

使用

sys_companyad_base_company表结构基本上时一致的,所更新的值的字段是一致的

MERGE INTO sys_company a
USING ad_base_company b
ON (a.company_code = b.company_code)
WHEN MATCHED THEN
UPDATE
SET a.upper_company_id = b.upper_company_id,
a.company_type = b.company_type,
a.company_c_name = b.company_c_name,
a.company_t_name = b.company_t_name,
a.company_e_name = b.company_e_name,
a.show_name = b.show_name,
a.address = b.address,
a.mobile_phone = b.mobile_phone,
a.valid_is = b.valid_is
WHEN NOT MATCHED THEN
INSERT
(a.company_id,
a.upper_company_id,
a.company_code,
a.company_type,
a.company_c_name,
a.company_t_name,
a.company_e_name,
a.show_name,
a.address,
a.mobile_phone,
a.email,
a.fax,
a.website,
a.remark,
a.display_no,
a.valid_is)
VALUES
(seq_sys_company.nextval,
b.upper_company_id,
b.company_code,
b.company_type,
b.company_c_name,
b.company_t_name,
b.company_e_name,
b.show_name,
b.address,
b.mobile_phone,
b.email,
b.fax,
b.website,
b.remark,
b.display_no,
b.valid_is);
posted @   站着说话不腰疼  阅读(996)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示