【发布时间】:2016-01-13 18:14:52
【问题描述】:
我无法让这个复合插入在两个表之间的 MERGE 语句中工作(忽略匹配条件,我知道这是不好的做法)。我遇到的问题是要填充目标表中的 ServerId 字段。 Team 字段填充良好,但所有行的 ServerId 都为空值。我在网上找不到这个例子,所以我希望有人能帮忙。我似乎没有任何语法错误,并且我知道 Source 表中的“ServerName”列已填充所有行。
MERGE ApplicationTeams AS Target
USING TempApplicationTeams AS Source
ON (Target.ServerId = (SELECT ID from Servers WHERE Name='Source.ServerName') AND Target.Team = Source.Team)
WHEN MATCHED THEN
UPDATE SET Target.Team = Target.Team
WHEN NOT MATCHED BY TARGET THEN
INSERT (ServerId, Team) VALUES((SELECT ID from Servers WHERE Name='Source.ServerName'), Source.Team)
WHEN NOT MATCHED BY SOURCE THEN
DELETE
;
谢谢。
【问题讨论】:
-
为什么不使用子查询作为源代码的一部分?
标签: sql sql-server tsql merge subquery