Oracle数据库之Oracle Merge Into 用法
小标 2019-03-19 来源 : 阅读 810 评论 0

摘要:本文主要向大家介绍了Oracle数据库之Oracle Merge Into 用法,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。

本文主要向大家介绍了Oracle数据库之Oracle  Merge Into 用法,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。

Oracle数据库之Oracle  Merge Into 用法

语法:

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(),输入框输入要替换的门店编码。


此时用该语句即可解决,

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

第二步:用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

   

本文由职坐标整理并发布,希望对同学们学习Oracle有所帮助,更多内容请关注职坐标数据库Oracle数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程