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 |

浙公网安备 33010602011771号