Table 1
Id Name Address
Table 2
Id Company Salary
Table3
Id Name Address Company Salary Age Sex
我想在单个MERGE语句中合并这些表,Is This 可能??
像
MERGE table1 AS tg1
MERGE table2 AS tg2
USING (SELECT Id ,Name ,Address FROM Table3) AS sr
ON tg1.Id = sr.Id and tg2.Id = sr.Id
WHEN MATCHED (tg1.Id =sr.Id) then DELETE
WHEN MATCHED (tg2.Id =sr.Id) then UPDATE SET tg2.Company = 'MyCompany'+sr.Company
and so on..
我是否需要为此类
MERGE
使用其他关键字 声明,或者我需要use
两个不同的MERGE
声明 此
答案 0 :(得分:1)
Merge只能有一个目标表。
但你可以使用这样的东西:
DECLARE @T TABLE(Id INT);
MERGE table2 AS tg2
USING (SELECT Id, Name, Address, Company FROM Table3) AS sr
ON and tg2.Id = sr.Id
WHEN MATCHED THEN
UPDATE SET tg2.Company = 'MyCompany' + sr.Company
OUTPUT tg2.Id INTO @T;
DELETE table1
WHERE Id in (SELECT Id
FROM @T);
OUTPUT也可以返回 $ action ,这样您就可以根据需要区分DELETE / INSERT / UPDATE。 您甚至可以在MERGE之前使用CTE并准备源表以避免MERGE中的复杂条件。
答案 1 :(得分:0)
您需要两个MERGE语句。一个用于更改table1中的数据,另一个用于更改table2中的数据。