我无法在两个表之间的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
;
感谢。
答案 0 :(得分:2)
我认为你应该删除 where clausule上的单个quoutes。
你写道: (来自Servers WHERE Name ='Source.ServerName'的SELECT ID)但我认为你应该这样写: (来自Servers WHERE Name = Source.ServerName的SELECT ID)
并确保 select id 仅返回一行,否则语句将失败
我希望它会有用