回答

收藏

SQL Server MERGE语句的问题

技术问答 技术问答 150 人阅读 | 0 人回复 | 2023-09-13

源表
8 H4 W# l% m* J2 ~: uId,Name,Address1   A     #2021   A     #2031   A     #2042   A     #202目标表
7 y; V7 S$ [# ?) z% H, C$ LId,Name,Address1   A     NULL合并后
# V+ T6 t. U" O, H3 n" TId,Name,Address1   A     #2022   A     #202我在用这个SQL! _- ?& B$ {$ `; \( ]- p
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这会导致错误
% u! A( `# A/ F  F新闻8672,等级16,状态1,第18行  
$ p8 L0 q$ ?6 w$ qMERGE尝试多次更新或删除同一行。这种情况发生在目标行与多源行匹配时。MERGE语句不能多次更新/删除目标表的同一行。优化ON为了确保目标行最多匹配一个源行或使用它GROUP
, |7 m8 t, g& ]9 r1 uBY对源行进行分组。" R( G, t; n# G1 K7 Q! D5 U6 U
我想更新三个匹配值中的任何一个A中行。这该怎么办?: b! n1 k, q* M+ |0 W! f  }( _* ]
                                                                ( K/ T( X3 w1 Q# V5 U
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则