merge into测试案例

一、创建表

 

      

create table test1
(id number primary key,
name varchar2(50));

create table test2
(id number primary key,
name varchar2(50));

 

二、插入数据

 

    insert into test1(id) values(1);
insert into test2(id,name) values(1,'王三');
insert into test2(id,name) values(2,'朱二');
commit;

 

三、使用merge into 使用update方式

 

 

SQL> MERGE INTO test1 T1
  2  USING test2 T2
  3  ON (T1.id = T2.id)
  4  WHEN MATCHED THEN
  5    UPDATE SET T1.NAME = t2.name
  6  ;
 
1 row merged
 
SQL> select * from test1;
 
        ID NAME
---------- --------------------------------------------------
         1 王三

    

 

四、使用merge into 使用update与insert into方式

 

                 SQL> MERGE INTO test1 T1
  2  USING test2 T2
  3  ON (T1.id = T2.id)
  4  WHEN MATCHED THEN
  5    UPDATE SET T1.NAME = t2.name
  6  WHEN NOT MATCHED THEN
  7    INSERT (id,name) VALUES(t2.id,t2.name);
 
2 rows merged
 
SQL> select * from test2;
 
        ID NAME
---------- --------------------------------------------------
         1 王三
         2 朱二

 

 

注:实现成功,是一对比较好的处理方式,此时需要关联条件是唯一性

 

五、merge into 除了等值条件外的另外一个条件

 

SQL> MERGE INTO test1 T1
  2  USING test2 T2
  3  ON (T1.id = T2.id and T2.id=2)
  4  WHEN MATCHED THEN
  5    UPDATE SET T1.NAME = t2.name
  6  ;
 
0 rows merged
 
SQL>
SQL> MERGE INTO test1 T1
  2  USING test2 T2
  3  ON (T1.id = T2.id and T2.id=1)
  4  WHEN MATCHED THEN
  5    UPDATE SET T1.NAME = t2.name
  6  ;
 
1 row merged
 
 
SQL> select * from test1;
 
        ID NAME
---------- --------------------------------------------------
         1 王三

 

注:条件都可以放在on后面

 

总结:

            1  merge into语句条件均可以放入on中

           2 根据唯一性是一个很好的处理字段的方法

           3 一般需要保证MERGE INTO test1 T1中test1中的字段为唯一行
ON (T1.id = T2.id)

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值