簡單的說就是,判斷表中有沒有符合on()條件中的數據,有了就更新數據,沒有就插入數據。 spa
有一個表T,有兩個字段a、b,咱們想在表T中作Insert/Update,若是條件知足,則更新T中b的值,不然在T中插入一條記錄。code
merge into 目標表 a using 源表 b on(a.條件字段1=b.條件字段1 and a.條件字段2=b.條件字段2 ……) when matched then update set a.更新字段=b.字段 when not matched then insert into a(字段1,字段2……)values(值1,值2……)
MERGE INTO USER UOR_0 USING (SELECT COUNT(1) AS ROW_COUNT FROM USER WHERE UOR_USER_ID = '2019052811' AND UOR_ORG_ID = '000002') UOR_1 ON (UOR_1.ROW_COUNT > 0) WHEN MATCHED THEN UPDATE SET UOR_0.UDR_CREATE_USER_ID = 'admin', UOR_0.UDR_CREATE_DATE = SYSDATE, UOR_0.UDR_UPDATE_USER_ID = 'admin', UOR_0.UDR_UPDATE_DATE = SYSDATE, UOR_0.UDR_RECORD_STATUS = '10' WHERE UOR_USER_ID = '2019052811' AND UOR_ORG_ID = '000002' WHEN NOT MATCHED THEN INSERT (UOR_0.UOR_USER_ID, UOR_0.UOR_ORG_ID, UOR_0.UDR_CREATE_USER_ID, UOR_0.UDR_CREATE_DATE, UOR_0.UDR_UPDATE_USER_ID, UOR_0.UDR_UPDATE_DATE, UOR_0.UDR_RECORD_STATUS) VALUES ('2019052811', '000002', 'admin', SYSDATE, 'admin', SYSDATE, '10')