MERGE INTO

372 阅读1分钟

MERGE 命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据。 MERGE 语法:

MERGE INTO [your table-name] [rename your table here]
USING ( [write your query here] )[rename your query-sql and using just like a table]
ON ([conditional expression here] AND […]…)
WHEN MATCHED THEN [here you can execute some update sql or something else ]
WHEN NOT MATCHED THEN [execute something else here ! ]

个人理解:

1.merge into [table-name]
所以当 MATCHED/NOT MATCHED update or insert 的都是 [table-name] 这个表 2.using
是使用using后面查出来结果集中的数据来 update or insert [table-name]这个表
3. on
就是[table-name]这个表使用using后面查出来的结果集的条件

##示例:

建表语句  
create table TEST (ID number(20),NAME varchar2(20) );  
INSERT语句  
insert into TEST values (1, ‘test1’);  
insert into TEST values (2, ‘test2’);  
ID NAME   
1 test1   
2 test2  

此时要插入一条数据 {ID=2,NAME=‘newtest2’} ,那么可以这么写

MERGE INTO TEST A   
USING (SELECT ‘2’ as ID, ‘newtest2’ as NAME FROM dual) B on (A.ID=B.ID)  
WHEN MATCHED THEN   
UPDATE SET A.NAME=B.NAME
WHEN NOT MATCHED THEN   
INSERT (A.ID, A.NAME) VALUES (B.ID, B.NAME );  

如果ID为2的数据存在那么 UPDATE,如果不存在INSERT