【发布时间】:2017-04-14 14:55:56
【问题描述】:
我有以下查询将表 o 的字段 sku 更新为表 p 的字段 AutoSKU。运行它给我错误:“不明确的列名'sku'”。我也知道问题是因为引擎不知道我在 WHERE 条件下谈论的是哪个 sku。但我需要这个条件来确保每个更新行都正确映射。用 o.sku 替换 sku 会出现另一个错误“无法绑定多部分标识符“o..sku”。”。有什么想法吗?
UPDATE o
SET sku = p.AutoSKU
FROM o (NOLOCK)
JOIN a (NOLOCK) ON a.Sku = o.sku
JOIN p (NOLOCK) ON p.Code = a.ProductCode
WHERE o.sku <> p.AutoSKU
AND sku = a.Sku
【问题讨论】:
-
这里
AND sku = a.Sku你必须在第一个sku前面加上适当的表别名。 -
你的问题没有意义。您已经在
on子句中拥有Sku的条件。WHERE子句中不需要重复。 -
你是对的,@GordonLinoff。我只是担心引擎将更新查询中的 o 表与 FROM 子句中的 o 表区别对待。谢谢!
标签: sql sql-server tsql sql-update