SQL Server与插入子查询合并
我很难在两个表之间的MERGE语句中使用这个复合插入。忽略when匹配条件,我知道这是一个糟糕的做法。我遇到的问题是要填充目标表中的ServerId字段。团队字段填充良好,但所有行的ServerId值都为空。我在网上找不到这样的例子,所以我希望有人能帮助我。我似乎没有任何语法错误,而且我知道源表中的“ServerName”列已为所有行填充SQL Server与插入子查询合并,sql,sql-server,tsql,merge,subquery,Sql,Sql Server,Tsql,Merge,Subquery,我很难在两个表之间的MERGE语句中使用这个复合插入。忽略when匹配条件,我知道这是一个糟糕的做法。我遇到的问题是要填充目标表中的ServerId字段。团队字段填充良好,但所有行的ServerId值都为空。我在网上找不到这样的例子,所以我希望有人能帮助我。我似乎没有任何语法错误,而且我知道源表中的“ServerName”列已为所有行填充 MERGE ApplicationTeams AS Target USING TempApplicationTeams AS Source
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
;
谢谢。我想你应该把where条款上的单条线路去掉 你写道: 从Name='Source.ServerName'所在的服务器中选择ID 但我认为你应该写下: 从Name=Source.ServerName的服务器中选择ID 并确保select id只返回一行,否则语句将失败
我希望它会有用非常感谢!我想我在其他地方读到过,可能在SQL合并语句中不允许使用子查询。你救了我一天,伙计。你为什么不把子查询作为源代码的一部分呢?