【发布时间】:2012-12-21 16:55:47
【问题描述】:
我有两张桌子
表Customers:
id,
CustomerName
表CustomerMapping
ID
WrongName,
CorrectedName
我想做的是:
如果 TableCustomers.CustomerName = TableCustomerMapping.WrongName,则使用 TableCustomerMapping.CorrectName 更新我的 TableCustomers.CustomerName
我尝试了此更新语句,但在我放弃并取消查询之前花费了太长时间(6 分钟以上)。我不应该花那么长时间来更新 1000 行。
这是我正在尝试的更新语句,我错过了什么吗?
UPDATE i
SET i.CustomerJob = c.CorrectedName
FROM dbo.TableCustomers i
LEFT JOIN dbo.CustomerMapping c ON (i.CustomerJob = c.WrongName);
GO
【问题讨论】:
-
如果您选择 i.CustomerJob, C.QBName FROM dbo.TableCustomers 我离开 JOIN dbo.CustomerMapping c ON (i.CustomerJob = c.MOAName) 会发生什么?你有 1000 行,还是更多?
-
如果您只想更新客户名称等于错误名称的位置,为什么不尝试在这两个相同的位置进行内部联接,而不是使用左联接从客户表中获取所有内容。不确定它会在多大程度上提高性能,但值得一试
-
这两个表是否通过 ID 关联?
-
杰森,我做到了,我得到了 1000 行。
-
它们与 id 无关,当前关联它们的唯一方法是根据 CustomerName 列与另一个表中的 WrongName 列进行匹配
标签: sql sql-server tsql sql-update