Merge into用法

簡單的說就是,判斷表中有沒有符合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')
  
相關文章
相關標籤/搜索