SqlServer2008 + 中的 Merge
Merge: 合並 融合
SqlServer2008 中的Merge 用於匹配兩種表中的數據,根據源表和目標表中的數據的比較結果對目標表進行對用的插入 更新 刪除等操作
主要用於表數據的同步 統計 等
語法:
merge 目標表名
using 源表名/(Select * from 源表) as 源表
on 目標表.字段=源表.字段
when match ---匹配
update set 目標表字段=源表.表字段
when not match --不匹配
insert / delete
舉個栗子:
准備數據:
--創建兩張表
create table T1(id int,[name] varchar(20))
create table T2(id int ,[name] varchar(20))
go
--插入數據、
insert into T1 values(1,'T1名稱1')
insert into T1 values(2,'T1名稱2')
insert into T1 values(3,'T1名稱3')
insert into T1 values(4,'T1名稱4')
insert into T2 values(1,'T2名稱1')
insert into T2 values(2,'T2名稱2')
insert into T2 values(5,'T2名稱3')
insert into T2 values(6,'T2名稱4')
go
merge T2 --目標表
using T1 --源表
on T1.id=T2.id --匹配條件
when matched then --匹配
update set [name]=T1.[name]
when not matched then --不匹配
insert values(id,[name]);
執行結果: T2 表結果為: