Merge into用法

简单的说就是,判断表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据。  

有一个表T,有两个字段a、b,我们想在表T中做Insert/Update,如果条件满足,则更新T中b的值,否则在T中插入一条记录。

 

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')
  

 

posted @ 2019-05-28 14:55  幸福安康  阅读(296)  评论(0编辑  收藏  举报