sql server中merge的使用

来源:互联网 发布:学位英语考试题库软件 编辑:程序博客网 时间:2024/06/03 09:26

建表orders:

create table orders (OrderID INT,CustomerID NCHAR(5))

   insert into orders values(1,'aaaa')
        insert into orders values(2,'bbbb')


复制一个数据进orders2表中

select * into orders2 from orders where OrderID =1

为了显示merge的效果 update orders2 set CustomerID = 'cccc'


将2个表数据合并1:

merge into orders o 

using orders2 o2  on o.OrderID = o2.OrderID 

when matched then update set o.CustomerID =o2.CustomerID  --两个表的字段匹配时 做set后面的操作

when not matched insert values(o2.orderid,o2.CustomerID); -- 匹配不到就插入


结果:orders 和 orders2

1cccc 
2 bbbb 


1cccc 

将2个表数据合并1:

merge into orders o

using orders2 o2 on o.OrderID = o2.OrderID 

when matched then update set o.CustomerID =o2.CustomerID  --两个表的字段匹配时 做set后面的操作

when not matched insert values(o2.orderid,o2.CustomerID) -- 匹配不到就插入

when not matched by source then delete;--如果来源表无法匹配到,就删除

结果:orders 和 orders2

1cccc 


1cccc 


匹配了操作orders表不匹配操作orders2表,是不是类似于操作前delete掉orders2的数据,要不然的话匹配不到插入那个怎么解释?来源表无法匹配指的是orders表数据找不到匹配数据,就删除该条数据,即取出匹配不上的原表数据????




0 0