目录
- 一. Merge into用法简介
- 二. Merge into灵活之处
一. Merge into用法简介
merge into 语句是insert 与 update语句的结合,可以同时实现insert 和 update的功能。
MERGE INTO T2 --目标表
USING Tl --源表
ON (Tl.NAME=T2.NAME) --表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据
WHEN MATCHED THEN --符合条件就更新数据
UPDATE
SET T2.MONEY=Tl.MONEY + T2.MONEY
WHEN NOT MATCHED THEN --不符合条件就插入数据
INSERT
VALUES (Tl.NAME,Tl. MONEY);
二. Merge into灵活之处
(1)UPDATE INSERT 动作可只出现其一(Oracl 9i 要求必须同时出现)
可选择仅 UPDATE 目标表:
MERGE INTO T2
USING Tl
ON (Tl.NAME=T2.NAME)
WHEN MATCHED THEN
UPDATE
SET T2.MONEY=Tl.MONEY+T2.MONEY;
也可选择仅仅 INSERT 目标表而不做任何 UPDATE 动作
MERGE INTO T2
USING Tl
ON (Tl.NAME=T2.NAME)
WHEN NOT MATCHED THEN
INSERT
VALUES (Tl.NAME,Tl.MONEY);
(2)可采用无条件方式插入
方法很简单,在 ON 关键字处写上恒不等条件(如 1=2 )后, MATCHED 语句的 INSERT 就变为无条件 INSERT了,同于INSERT … SELECT 的写法,具体如下:
MERGE INTO T2
USING Tl
ON (1=2)
WHEN NOT MATCHED THEN
INSERT
VALUES (Tl.NAME,Tl.MONEY);