【发布时间】:2012-08-13 02:59:43
【问题描述】:
我有两张桌子:
表 1:
ID ColA ColB Status
表 2:
ColA ColB
我正在尝试将 表 2 中的 MERGE 记录转换为 表 1,其方式如下:
- 对于 Table 1 中存在的 Table 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 有什么建议吗?
【问题讨论】:
标签: sql sql-server sql-server-2008 merge