建表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表数据找不到匹配数据,就删除该条数据,即取出匹配不上的原表数据????