想要在oracle sql中的MERGE语句中添加一些条件用于插入/更新

我必须在表target_table中插入/更新一些RECORDS.这些记录来了一个source_table.

我正在使用MERGE来更新/插入到target_table中.查询如下

MERGE
   INTO  target_table tgt
   USING source_table src
   ON  ( src.column1 = tgt.column1 and
         src.column2 = tgt.column2)
WHEN MATCHED
THEN
   UPDATE
   SET   tgt.column3= src.column3,
         tgt.column4 = src.coulmn4   
WHEN NOT MATCHED
   THEN
INSERT ( tgt.column1,
         tgt.column2,
         tgt.column3,
         tgt.column4 )
VALUES ( src.coulmn1,
         src.coulmn2,
         src.coulmn3,
         src.coulmn4);

我想在更新中添加一些具体条件.

如果target_table.column3在(val1′,’val2)

那么只有应该有更新,否则没有更新或插入.

最佳答案
您可以简单地将WHERE子句添加到UPDATE. More about it in oracle docs.

所以在你的情况下,它应该是:

...
WHEN MATCHED
THEN
   UPDATE
   SET   tgt.column3= src.column3,
         tgt.column4 = src.coulmn4
   WHERE tgt.column3 IN (val1, val2) 
WHEN NOT MATCHED
...

转载注明原文:想要在oracle sql中的MERGE语句中添加一些条件用于插入/更新 - 代码日志