oracle表数据合并

来源:互联网 发布:那些事那些人 知乎 编辑:程序博客网 时间:2024/05/19 10:41

    如何将两张表进行合并。

    业务场景:

        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);

0 0
原创粉丝点击