SQL中的多行更新查询问题

时间:2013-09-24 20:53:35

标签: sql-server tsql

我正在尝试使用更新查询,但到目前为止它一直在我身上失败,我不明白我在这里做错了什么。我收到此错误'更新已取消:尝试使用多个连接行中的值更新目标行'。我知道名为OTHER_TABLE的表有重复记录。这是我目前的查询:

UPDATE MAINTABLE
         SET BLDG_NBR = DM.BLDG_NBR
         FROM OTHER_TABLE DM
         WHERE  MAINTABLE.BLDG_NM = DM.BLDG_NM

1 个答案:

答案 0 :(得分:0)

您需要加入两个表

UPDATE MAINTABLE
SET BLDG_NBR = DM.BLDG_NBR
FROM MAINTABLE INNER JOIN OTHER_TABLE DM
     ON MAINTABLE.BLDG_NM = DM.BLDG_NM

根据您的评论,您没有在表上设置索引,因此它执行全表扫描。尝试在执行update语句之前在两个表上添加索引

CREATE NONCLUSTERED INDEX MAINTABLE_BLDGNM_idx ON MAINTABLE(BLDG_NM);
CREATE NONCLUSTERED INDEX OTHERTABLE_BLDGNM_idx ON OTHER_TABLE(BLDG_NM);