我正拼命地为生产环境创建一个决赛桌,但我有一些问题......
我的数据库中有2个表。 MyTable的格式与另一个(AnotherTable)完全相同。 AnotherTable具有我想在MyTable中的最终值。
我正在尝试将MyTable的gq值更新为等于AnotherTable的gq值中的值。我不能再在生产中使用AnotherTable,因为它是归档数据......
因此我的担忧。我写了一个更新声明(下面)试图这样做。问题是每次调用此更新时我都不想更新MyTable的每一行。我的第二个where子句抛出“多部分标识符无法绑定”错误。然而,我需要在那里有第二个where子句,以便向我保证我不会立即更新整个数据库的信息。
请帮忙!我仍然感觉像是一个新手
UPDATE MyTable
SET MyTable.gq=
(select top 1 ANotherTable.GQ as gq
from AnotherTable , MyTable
WHERE CONVERT(VARCHAR(MAX), AnotherTable.UniqueTextField)= MyTable.uniqueVarCharField
)
WHERE CONVERT(VARCHAR(MAX), AnotherTable. UniqueTextField)
= MyTable.uniqueVarCharField
答案 0 :(得分:1)
UPDATE
M
SET
MyTable.gq = A.gq
FROM
MyTable M
JOIN
AnotherTable A ON CONVERT(VARCHAR(MAX), A.UniqueTextField)= M.uniqueVarCharField
JOIN将限制在匹配的位置。
但是,您可能需要在WHERE子句或更多JOIN条件中使用更多过滤器 这仍将更新表格相交的每一行
答案 1 :(得分:0)
您的两张桌子只需加入:
UPDATE m SET m.Field = o.Field
FROM MyTable m INNER JOIN otherTable o ON m.JoinedField=o.JoinedField