oracle:将t2表中的数据批量插入到t1表中,有则更新,无则插入。
注意:多个条件在on中,并用and连接。
语法:
merge into 表名 t1
using (select '数据数据' 字段1,'数据数据' 字段2 from dual) t2
on (t1.字段1 = t2.字段1 and t1.字段2=t2.字段2)
when matched then
update set t1.字段2=t2.字段2
when not matched then
insert values (t2.字段1, t2.字段2)
示例:
-- 将T2表中的数据批量插入到T1表中,有则更新,无则插入。
MERGE INTO EMERGENCY_NOTICE_CBSS1 T1
USING (SELECT TRADE_TYPE_CODE, NET_TYPE_CODE, TRADE_ID, USER_ID
FROM UCR_QRY_CRM.TF_B_TRADE
WHERE TRADE_TYPE_CODE = '7301'
AND NET_TYPE_CODE = '50' AND USER_ID='1119072356576816') T2
ON (T1.USER_ID = T2.USER_ID AND T1.TRADE_ID=T2.TRADE_ID)-- 存放条件
WHEN NOT MATCHED THEN
INSERT (TRADE_TYPE_CODE, NET_TYPE_CODE, TRADE_ID, USER_ID)
VALUES(T2.TRADE_TYPE_CODE, T2.NET_TYPE_CODE, T2.TRADE_ID, T2.USER_ID)
WHEN MATCHED THEN
UPDATE SET REMARK='已存在';