我有两张桌子:
表 1:
ID ColA ColB Status
表 2:
ColA ColB
我正在尝试以以下方式将表 2MERGE
中的记录记录到表 1中:
- 对于表 1中的表 2中的每一行,我设置
Status = 1
- 对于表 2中不存在于表 1 中的每一行,我将该行插入到表 1中并设置
Status = 1
- 对于表 1中不存在于表 2中的每一行,设置
Status = 0
是否有可能在一个声明中做到这一点?1
目前,我能够实现2
但不确定如何获得第三个:
MERGE INTO dbo.Table1 WITH(HOLDLOCK) AS Target
USING dbo.Table2 AS Source
ON Target.ColA = Source.ColA AND Target.ColB = Source.ColB
WHEN MATCHED THEN
UPDATE SET Target.Status = 1
WHEN NOT MATCHED THEN
INSERT (ColA, ColB, Status) VALUES(Source.ColA, Source.ColB, 1);
关于如何3
在同一声明中实现的任何建议?