sqlserver 关于Merge 语法

语法

Merge TOP 数量 TargetTable
USING  SourceTable
ON ---关联条件
WHEN MATCHED 
THEN  ---匹配执行语句
WHEN NOT MATCHED 
THEN  ---不匹配(目标表中不存在、源表中存在的)执行语句)
WHEN NOT MATCHED BY SOURCE
THEN ---不匹配(目标表中存在、源表中不存在的)
OUTPUT ---输出做过变动的数据

 

示例

Merge into TargetTable as T
USING SourceTable as S
ON T.Id=S.Id
WHEN MATCHED  AND id=1
THEN  UPDATE T.Name=S.Name ---匹配更新TargetTable的Name为SourceTable的Name
WHEN NOT MATCHED ---不匹配(TargetTable中id不存在、SourceTable中存在的)插入数据)
THEN  INSERT (id,name) values(s.id,s.name)
WHEN NOT MATCHED BY SOURCE ---不匹配(TargetTable中id存在、SourceTable中不存在的) 删除目标表的数据
THEN Delete
OUTPUT $ACTION AS [ACTION],Inserted.id as 插入的id,Inserted.Name as 插入的Name,deleted.id as 删除的id,deleted.Name as 删除的Name  ---输出做过变动的数据

 

注:

表名 存储数据 适用操作
Inserted 新数据(插入或更新后的值) INSERT, UPDATE
Deleted 旧数据(删除或更新前的值) DELETE, UPDATE

 

 

 

 

 

posted @ 2025-12-11 15:28  流年sugar  阅读(2)  评论(0)    收藏  举报