从另一个表更新表(更新选择)

时间:2018-08-04 18:26:03

标签: sql sql-server

有一个应用程序可以记录来自项目和其他各种数据的交易。

但是,有一些额外的列在交易时未填充。这些列的数据存储在列出所有项目的数据库的单独表中。

以下示例:

交易记录表-在此示例中,该应用程序将填写TransID,Project和Country。但是,应用程序无法填充Task和Org。

enter image description here

项目表-这是主要的项目数据库。

enter image description here

问题

我需要使用“项目表”中的数据更新事务表“任务​​”和“组织”列。我认为这很简单:

UPDATE TABLE Transaction_Table A SET A.TASK =
(SELECT B.TASK FROM Project_Table B WHERE B.Project = A.Project AND B.Country = A.Country)
, A.Org = 
(SELECT B.Org FROM Project_Table B WHERE B.Project = A.Project)

有人可以建议最好的方法以获得我想要的结果吗?

谢谢

2 个答案:

答案 0 :(得分:1)

只需在这两个表之间使用inner连接并照常更新

    UPDATE A
    set A.Task=P.Task,
        A.Org=P.Org
    from
    Transaction_Table A inner join
    Project_Table P on A.Project=P.Project and A.Country=P.Country

答案 1 :(得分:0)

您可以在“常规”中使用此查询:

UPDATE table1
SET table1.column = table2.expression1
FROM table1
INNER JOIN table2
ON (table1.column1 = table2.column1)
[WHERE conditions];