如何在2个表SQL之间更新或复制数据

时间:2016-07-26 08:15:04

标签: sql toad

我有表名Merge_table,如:

 Employee_Number   MINISTRY_CODE   BRANCH_SECRETARIAT_CODE

    12                 333                 30
    13                 222                 31

我想复制BRANCH_SECRETARIAT_CODE的值并将其粘贴到名为EMPLOYMENTS的不同表中,如下所示: 并且ENTITY_BRANCH具有空数据

 EMPLOYEE_NUMBER    JOINING_DATE      ENTITY_BRANCH 

     12              11/12/2006          null
     13              01/11/2009          null

所以,现在我想从table1复制BRANCH_SECRETARIAT_CODE的值 table2根据EMPLOYEE_NUMBER

为每位员工提供ENTITY_BRANCH

2 个答案:

答案 0 :(得分:2)

您可以在UPDATE指令中声明多个表,并指定哪个表必须从另一个表的值更新哪个表。

在您的情况下,您只有2个表格,因此使用T1.Employee_Number = T2.Employee_Number更容易形成隐含的关节:

UPDATE Table1 T1, Table2 T2
SET T2.ENTITY_BRANCH  = T1.BRANCH_SECRETARIAT_CODE 
WHERE T1.Employee_Number  = T2.Employee_Number   

我猜这是针对SQL服务器的,但是这个UPDATE语句也适用于MySQL和Access。请编辑您的问题以添加正确的RDBMS标记。

答案 1 :(得分:1)

使用ANSI标准merge statement,它提供了更好的join样式语法,用于匹配源表和目标表,支持复杂的源子句,支持insert等等。

merge into EMPLOYMENTS -- destination table
using Merge_table      -- source table, or nested subquery, CTE, etc.
on Merge_table Employee_Number = EMPLOYMENTS.EMPLOYEE_NUMBER
    -- any other criteria to determine which destination rows to affect
    -- e.g.: and EMPLOYMENTS.EMPLOYEE_NUMBER is null
-- when not matched then
--     [...]
when matched then
    update
    set EMPLOYMENTS.ENTITY_BRANCH = Merge_table.BRANCH_SECRETARIAT_CODE;