oracle merge into insert,Oracle Merge Into 用法

oracle merge into insert,Oracle Merge Into 用法语法:MERGE[INTO[schema.]table[t_alias]USING[schema.]{table|view|subquery}[t_alias]ON(condition)WHENMATCHEDTHENmerge_update_clauseWHENNOTMATCHEDTHENmerge_insert_clause;介绍MERGE语句是…

语法:

MERGE [INTO [schema .] table [t_alias]

USING [schema .] { table | view | subquery } [t_alias]

ON ( condition )

WHEN MATCHED THEN merge_update_clause

WHEN NOT MATCHED THEN merge_insert_clause;

介绍

MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。

这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。

举例

shop_supplier 门店和经销商关系表 :shop_id (门店表主键),supplier 经销商ID

shop_header 门店基础信息表: row_id (门店表主键,uuid),shop_code 门店编码

门店经销商关系表存的是门店和经销商关系,存的是门店ID(和门店编码不同)此时要求将A经销商下的部分或者全部门店替换到B经销商下,前台选择原经销商和新经销商传到后台为经销商ID(),输入框输入要替换的门店编码。

AAffA0nNPuCLAAAAAElFTkSuQmCC

此时用该语句即可解决,

第一步:判断所输入的所有门店是否有不在原经销商下的,有的话抛出异常,将信息带出

第二步:用merge into 将原经销商A下的所有或者部分门店替换到新经销商B下

第三步:将原经销商A下的门店关系删除解绑。

第一种:全部替换,也即是不输入门店,将A经销商下所有的门店换绑定到B经销商下,sql语句:

MERGE INTO ( SELECT * FROM shop_supplier T WHERE T .SUPPLIER = ‘supplier2’) t2

USING ( SELECT * FROM shop_supplier T WHERE T .SUPPLIER = ‘supplier1’ )) t1

ON (t1.SHOP_ID = t2.SHOP_ID)

WHEN MATCHED THEN

UPDATE SET t2.UPDATE_DT = SYSDATE,t2.UPDATE_ID = ?

WHEN NOT MATCHED THEN

INSERT (t2.ROW_ID,SHOP_ID,SUPPLIER)

VALUES

(SYS_GUID(),t1.SHOP_ID,’supplier2′)

如果新经销商和原经销商下都有门店s1则只需更新下新经销商和s1的某些字段

如果新经销商没有门店s1 则将这条数据insert

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37040.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注