Oracle中merge用法

2014-11-24 18:54:47 · 作者: · 浏览: 0

语法


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;