2表中的不同数据库错误 - MERGE语句尝试多次更新或删除同一行

时间:2015-02-12 19:13:39

标签: sql sql-server tsql

请帮我处理我的剧本。

我正在尝试运行脚本并收到错误:

  

MERGE语句尝试多次更新或删除同一行

这是我的剧本。

MERGE [Database2].[DBO].[evt_Building Permits] AS stm 
USING (SELECT * FROM [Database1].[DBO].[PERMIT_TRACKING]) AS sd ON rtrim(ltrim(stm.BUILDING_PERMIT_NO)) = rtrim(ltrim(sd.Building_Permit_Number)) COLLATE DATABASE_DEFAULT

WHEN Matched THEN
  UPDATE SET stm.concession = sd.prj_concession;

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

表示你的源表[Database1]。[DBO]。[PERMIT_TRACKING]有重复的BUILDING_PERMIT_NO键

尝试找到重复的建筑许可证

SELECT BUILDING_PERMIT_NO,count(*) FROM [Database1].[DBO].[PERMIT_TRACKING] group by BUILDING_PERMIT_NO having  count(*) > 0 

如果您无法修复源数据,请确保通过BUILDING_PERMIT_NO

对数据进行分组来确定源查询中有唯一键