您好,欢迎访问一九零五行业门户网

Oracle中merge用法

merge语句是oracle9i新增的语法,用来合并update和insert语句。 通过merge语句,根据一张表或子查询的连接条件对另外一张表进行查
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、update或insert子句是可选的
2、update和insert子句可以加where子句
3、在on条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表
4、update子句后面可以跟delete子句来去除一些不需要的行
首先创建示例表:
create table products
      (
      product_id integer,
      product_name varchar2(60),
      category varchar2(60)
      );
insert into products values (1501, 'vivitar 35mm', 'electrncs');
      insert into products values (1502, 'olympus is50', 'electrncs');
      insert into products values (1600, 'play gym', 'toys');
      insert into products values (1601, 'lamaze', 'toys');
      insert into products values (1666, 'harry potter', 'dvd');
      commit;
create table newproducts
      (
      product_id integer,
      product_name varchar2(60),
      category varchar2(60)
      );
insert into newproducts values (1502, 'olympus camera', 'electrncs');
      insert into newproducts values (1601, 'lamaze', 'toys');
      insert into newproducts values (1666, 'harry potter', 'toys');
      insert into newproducts values (1700, 'wait interface', 'books');
      commit;
其它类似信息

推荐信息