源表
Id, Name, Address
1 A #202
1 A #203
1 A #204
2 A #202
目标表
Id, Name, Address
1 A NULL
合并后
Id, Name, Address
1 A #202
2 A #202
我正在使用这个SQL语句
create table #S (ID int, Name varchar(25) NULL, Address varchar(25) NULL)
create table #T (ID int, Name varchar(25) NULL, Address varchar(25) NULL)
INSERT #S values(1, 'A', '#202')
INSERT #S values(1, 'A', '#203')
INSERT #S values(1, 'A', '#203')
INSERT #S values(1, 'A', '#204')
INSERT #T values(1, 'A', NULL)
MERGE #T USING
(
Select id, name, address
from #S
) AS S(id,name,address)
on #T.id=S.id and #T.Name=S.Name
when not matched THEN
INSERT values(S.id,S.Name, S.Address)
when matched then
update set Address = S.Address;
GO
Select * from #T
GO
Select * from #S
GO
这会导致错误
消息 8672,级别 16,状态 1,第 18 行
当目标行匹配多个源行时,MERGE 语句尝试更新或删除同一行超过一次。 MERGE 语句不能多次更新/删除目标表的同一行。请完善 ON 子句以确保目标行最多与一个源行匹配,或使用 GROUP BY 子句对源行进行分组。
我想用任意三个匹配值中的 Address 值来更新 A 中的行。该怎么做?