首页 > 代码库 > Oracle 使用MERGE INTO 语句更新数据

Oracle 使用MERGE INTO 语句更新数据

/*Merge into 详细介绍
MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。
通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,
连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。
这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。 
*/
/*语法:
MERGE [INTO [schema .] table [t_alias] 
USING [schema .] { table | view | subquery } [t_alias] 
ON ( condition ) 
WHEN MATCHED THEN merge_update_clause 
WHEN NOT MATCHED THEN merge_insert_clause;
*/

 

 1 MERGE INTO T_PRODUCT t
 2 USING T_PRODUCT_TEMP u 
 3 ON ( u.id=t.id)
 4 WHEN MATCHED THEN
 5     UPDATE  SET t.name = u.name,t.orderid = u.orderid,
 6      t.descr = u.descr
 7      --delete where u.id=1 
 8 WHEN NOT MATCHED THEN 
 9     INSERT (id, name, orderid, descr) VALUES(u.id, u.name,u.orderid, u.descr)
10 --WHEN NOT MATCHED BY u and t.id=u.id THEN
11   --Delete; 

新特性的功能,加快的复制表数据的性能,一次性的读取,可以快速把数据复制到目标表中,其中在update中还支持delete语句的写法

可过过滤些不需要更新的数据。速度还是很不错的。

Oracle 使用MERGE INTO 语句更新数据