merge into 的语法如下所示:
MERGE INTO [target-table] T USING [source-table sql] S ON([conditional expression] and [...]...)
WHEN MATCHED
THEN [UPDATE sql]
WHEN NOT MATCHED
THEN [INSERT sql]
判断源表 S 和目标表 T 是否满足 ON 中的条件,如果满足则用 S 表去更新 T 表,如果不满足,则将 S 表数据插入 T 表中。但是有很多可选项,如下:
普通模式
只 update 或者只 insert
无条件 insert 实现
带 delete 的 update
示例
CREATE TABLE #temTbale1
(
a int NULL,
b nvarchar(50) NULL,
c nvarchar(50) NULL,
d nvarchar(50) NULL,
e int NULL
)
CREATE TABLE #temTbale2
(
a int NULL,
b nvarchar(50) NULL,
c nvarchar(50) NULL,
d nvarchar(50) NULL,
e int NULL
)
MERGE INTO #temTbale1 t -- target-table 目标表
USING
(
select a,b,c,d,e from #temTbale2
) s -- source-table 源表
ON t.a = s.a and t.b=s.b and t.c= s.c --关联条件
WHEN MATCHED THEN
UPDATE SET t.d= s.d , t.e=s.e
WHEN NOT MATCHED THEN
INSERT
(
a,
b,
c,
d,
e
)
VALUES
(s.a, s.b, s.c,s.d, s.e);