达梦数据库merge into更新多个字段,插入特定字段的使用

本文主要讲解了如何在达梦数据库的mergeinto语句中进行多字段更新和插入操作,包括当匹配和不匹配条件下的处理,并强调了使用表别名避免错误的重要性。
摘要由CSDN通过智能技术生成

在达梦数据库的官方文档里有介绍merge into的用发,可以参考
merge into的使用
这个示例里用到的语句是

MERGE INTO dmhr.dup_emp
     USING dmhr.emp_salary
        ON (dmhr.dup_emp.employee_id = dmhr.emp_salary.employee_id)
WHEN MATCHED
THEN
   UPDATE SET dmhr.dup_emp.salary = dmhr.emp_salary.new_salary
WHEN NOT MATCHED
THEN
   INSERT VALUES (dmhr.emp_salary.employee_id,
                      'dm2020',
                      410107197103257999,
                      dmhr.emp_salary.new_salary,
                      102);

这个示例问题,就是只介绍了一个字段更新时的情况,还只介绍了全字段更新的情况,这种情况算是比较特殊了,想更新多个字段,插入部分字段怎么写呢?查阅了一些资料,得到的结论是

MERGE INTO dmhr.dup_emp a
     USING dmhr.emp_salary b
        ON (a.employee_id = b.employee_id)
WHEN MATCHED
THEN
   UPDATE SET a.salary = b.new_salary,
   a.department_id=b.department_id
WHEN NOT MATCHED
THEN
   INSERT (a.department_id,a.salary) VALUES (b.employee_id,b.new_salary);

可以看到:

  1. 多个更新操作中间用逗号隔开即可
  2. 特定多个字段插入,在INSERT语句后填入“目标表名.字段名”,在VALUES中填入“源表名.字段名”即可。

有一点需要注意的,我用以下方式时候报错,所以还是能将表起别名就起个别名,用起来也方便
错误示范:

MERGE INTO dmhr.dup_emp a
     USING dmhr.emp_salary b
        ON (dmhr.dup_emp.employee_id = dmhr.emp_salary.employee_id)
WHEN MATCHED
THEN
   UPDATE SET dmhr.dup_emp.salary = dmhr.emp_salary.new_salary,
   dmhr.dup_emp.department_id=dmhr.emp_salary.department_id
WHEN NOT MATCHED
THEN
   INSERT (dmhr.dup_emp.department_id,dmhr.dup_emp.salary) 
   VALUES (dmhr.emp_salary.employee_id,dmhr.emp_salary.new_salary);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值