oracle表数据同步 merge语法

来源:互联网 发布:八大菜系之首 知乎 编辑:程序博客网 时间:2024/05/16 08:47

简介

MERGE语句是SQL语句的一种。在SQL ServerOracle数据库中可用,MySQL、PostgreSQL中不可用。MERGE是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表(原数据表,source table)或子查询的连接条件对另外一张(目标表,target table)表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。

语法

merge into  T_TABLE_2 t                                                              //命名T_TABLE_2表 别名 t
using (select ID,NAME,PWD from T_TABLE_1) s                       //using子句提供merge操作的数据源表T_TABLE_1,命名s
on (t.NO = s.ID)                                                                             //on子句指定合并的条件 (这里是两个表的主键)

when matched then                                                                    //on子句中的条件成立
  update set                                                                                  //修改语句
  t.NAME = s.NAME,t.PWD=S.PWD                                              //写上要修改的列值
 
when not matched then                                                             //on子句中的条件不成立
  INSERT (t.NO, t.NAME,t.PWD) VALUES (s.ID, s.NAME,s.PWD) //将数据源中的数据添加进来

使用发法对照

现将T_TABLE_1表中的数据复制到T_TABLE_2 表中 其中各表都有三列(表结构可以不同  指定列即可)

1 0