Oracle 使用MERGE INTO 语句更新数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 语句更新数据的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 使用MERGE INTO 语句更新数据

oracle merge into用法

在oracle中使用merge into实现更新和插入数据

oracle中多个进程可以使用merge into语句对同一个表操作不,能锁表吗

Merge Into 语句代替Insert/Update在Oracle中的应用实战

Oracle merge into 的效率问题