如何将两张表进行合并。
业务场景:
mis做了基础资料的更新,更新内容包括对历史数据的修改和新增一部分数据。他们是把这部分数据导出来一份excel,然后我把excel的内容分两次导入到新建的测试表中,
然后把两张表中的数据进行合并。
Merge 命令可以用来用一个表中的数据来修改或者插入到另一个表。插入或者修改的操作取决于ON子句的条件。
该语句可以在同一语句中执行两步操作,可以减少执行多条INSERT 和UPDATE语句。
MERGE是一个确定性的语句,即不会在同一条MERGE语句中去对同一条记录多次做修改操作。
MERGE INTO 要合并的表/视图
USING 要更新或插入的数据源
ON 语句进行插入或更新的条件(注意条件要用括号括起来)
WHEN MATCHED THEN UPDATE SET要更新的列(update和set中间没有表名)
WHEN NOT MATCHED THEN INSERT 要插入的列(不用加表名)
例:
MERGE INTO T_DUTY_EMPLOYEES T
USING V_DUTY_EMPLOYEES V
ON (T.ID = V.ID)
WHEN MATCHED THEN
UPDATE
SET T.PROVINCE = V.PROVINCE,
T.CITY = V.CITY,
T.DUTYDAY = V.DUTYDAY,
T.DUTYTIME = V.DUTYTIME,
T.DUTYAREA = V.DUTYAREA,
T.EMPLOYEENAME = V.EMPLOYEENAME,
T.EMPLOYEEID = V.EMPLOYEEID,
T.EMPLOYEETEL = V.EMPLOYEETEL,
T.BAK = V.BAK
WHEN NOT MATCHED THEN
INSERT
(PROVINCE,
CITY,
DUTYDAY,
DUTYTIME,
DUTYAREA,
EMPLOYEENAME,
EMPLOYEEID,
EMPLOYEETEL,
BAK,
CNUM,
ID,
SUNNUM2,
SUNNUM,
ROLEID)
VALUES
(V.PROVINCE,
V.CITY,
V.DUTYDAY,
V.DUTYTIME,
V.DUTYAREA,
V.EMPLOYEENAME,
V.EMPLOYEEID,
V.EMPLOYEETEL,
V.BAK,
V.CNUM,
V.ID,
V.SUNNUM2,
V.SUNNUM,
V.ROLEID);