首页 > 解决方案 > 如何使用另一个表中的数据更新列?- SQL Server 12.0.5

问题描述

我正在尝试使用表“SC_PROD”中的“custom_number_8”列中的数据更新表“SUS_WK”中的“效率”列。但我只希望它在满足某些要求时更新,例如表“SUS_WK”中的“ID”与表“SC_PROD”中的“ID”匹配。

我怎样才能做到这一点?

我试图这样做:

    UPDATE SUS_WK
    SET efficiency = SC_PROD.custom_number_8
    FROM SUS_WK t
        JOIN SC_PROD p
        ON t.id = p.id

当我尝试上面的代码时,我收到以下错误:

无法绑定多部分标识符“SC_PROD_PLAN_PLND.custom_number_8”。

但我希望该代码的结果会使用表“SC_PROD”中“custom_number_8”列中的数据更新“SUS_WK”中的“效率”列。

标签: sqlsql-serverdatabasesql-server-2012

解决方案


你在正确的轨道上。只需使用表别名而不是表名:

UPDATE t
    SET efficiency = p.custom_number_8
    FROM SUS_WK t JOIN
          SC_PROD p
          ON t.id = p.id;

我强烈建议UPDATE也使用表别名。SQL Server 会将表名解析为与t-- 相同,但取决于这使得查询相当难以破译(因为对同一个表的引用具有不同的别名)。


推荐阅读