oracle merge into与sqlserver merge into 比较


merge into:
在两个表之间,根据与源表联接的结果,对目标表执行插入、更新或删除操作。
Oracle在9i引入了merge into命令,SQL Server 2008也引入merge into。

不多说了,实例对比一下吧!


oracle merge into:

/*
drop table a;
drop table b;
*/

create table a (aid integer null,aname varchar2(10) null);
create table b (bid integer null,bname varchar2(10) null);

insert into a values(1,'aname1');
insert into a values(3,'aname3');
insert into a values(4,'aname4');

insert into b values(1,'bname1');
insert into b values(2,'bname2');
insert into b values(3,'bname3');

merge into a 
using b 
on (a.aid=b.bid)--必须加括号
when matched then 
  update set a.aname=b.bname where b.bid>1 --可加条件
when not matched then 
  insert values(b.bid,b.bname)
  
select * from a;
select * from b;
查看A表结果:


1. 条件id>1 不更新

2. 符合条件,更新目标表

3. 注意:目标表中,此行 aid<>bid,保留了下来

4. 目标表中不存在id=2的,插入到目标表

sqlserver2008  merge into:

/*
drop table a;
drop table b;
*/
create table a (aid int null,aname varchar(10) null);
create table b (bid int null,bname varchar(10) null);

insert into a values(1,'aname1');
insert into a values(3,'aname3');
insert into a values(4,'aname4');

insert into b values(1,'bname1');
insert into b values(2,'bname2');
insert into b values(3,'bname3');

merge into a
using b 
on a.aid=b.bid --可不用括号
when matched then 
  update set a.aname=b.bname
when not matched then 
  insert values(b.bid,b.bname)
when not matched by source then --在a表中无操作的记录可执行删除
  delete; --必须以分号结束


select * from a;
select * from b;
查看A表结果:


看,匹配的完全更新到A表!


oracle merge into 和 sqlserver 2008 merge into 的区别:

1. oracle在连接条件 on(a.aid=b.bid) 必须加括号,sqlserver 可以不用,也可以用。

2. oracle中目标表不参与的记录行只能保留,sqlserver 还可以执行删除。

3. oracle 在匹配条件中可以进一步添加更新的筛选条件,sqlserver不能增加条件约束。

4. oracle在语句结尾可加或不加分号,sqlserver 必定要在语句结束后添加分号“;”。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值