简介
MERGE语句是SQL语句的一种。在SQL Server、Oracle数据库中可用,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 表中 其中各表都有三列(表结构可以不同 指定列即可)