我有表名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
答案 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;