merge into主要实现update or insert的操作
格式如下:
merge into tablename [tablerename]
using(select query) [queryrename]
on(conditon1 [and condition2...])
when match then (data control sentence1)
when not match then (data control sentence)
解释一下merge into 的格式:
(1)首先确定要对哪个表进行insert 或者 update操作
(2)可以给表命名别名
(3)using语句中是一个查询语句,将查询结果出来,其中[queryrename]为查询操作的别名
(4)将using语句中查询出来的结果逐条比较,是否满足condition的条件
(5)若匹配成功,执行语句1;若匹配失败,执行语句2;若查询语句没有查出结果,不执行后续的match/not match操作。
实例如下:
MERGE INTO SDBMGR.FUL_DMDUNIT FDMD
USING (SELECT PRODUCTID,
UPC,
FROM SDBMGR.HLD_DMDUNIT) HDMD
ON (FDMD.PRODUCTID = HDMD.PRODUCTID)
WHEN MATCHED THEN
UPDATE
SET FDMD.UPC = HDMD.UPC,
FDMD.LASTUPDATED = SYSDATE
WHEN NOT MATCHED THEN
INSERT
(FDMD.PRODUCTID,
FDMD.UPC,
FDMD.IMPORTTIME)
VALUES
(HDMD.PRODUCTID,
HDMD.UPC,
HDMD.IMPORTTIME);