【发布时间】:2017-12-11 19:32:03
【问题描述】:
我有一张临时表 -
CREATE TABLE #TempMain(
A int,
B int,
C int
)
我运行以下插入仅查询一次只是为了填充#TempMain
insert into #TempMain
SELECT
A,
B,
C
FROM dbo.entity where RequestId = 1241 and ClassId = 25 and type=102
之后我使用 Merge 语句 -
MERGE #TempMain AS Target
USING (
SELECT
A,
B,
C
FROM dbo.entity where RequestId = 1241 and ClassId = 25 and type=102
) AS Source ON (Target.B= Source.B AND Target.C= Source.C)
WHEN MATCHED THEN
UPDATE SET Target.A= Source.A
WHEN NOT MATCHED BY Target THEN
INSERT (A,B,C)
VALUES (Source.A,Source.B,Source.C);
select * from #temp1
当我运行这个合并语句查询时,我得到一个错误 -
MERGE 语句多次尝试更新或删除同一行。当目标行匹配多个源行时会发生这种情况。 MERGE 语句不能多次 UPDATE/DELETE 目标表的同一行。优化 ON 子句以确保目标行最多匹配一个源行,或使用 GROUP BY 子句对源行进行分组。
我无法理解代码中的问题。我寻找了其他类似的错误我仍然无法解决这个问题。
【问题讨论】:
标签: sql-server merge