在 Oracle SQL 的 MERGE 语句中为 INSERT/UPDATE 添加条件 [英] Adding conditions in MERGE statement in Oracle SQL for INSERT/UPDATE

查看:141
本文介绍了在 Oracle SQL 的 MERGE 语句中为 INSERT/UPDATE 添加条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我正在使用 MERGE 更新/插入 target_table.

MERGEINTO target_table tgt使用 source_table srcON ( src.column1 = tgt.column1 和src.column2 = tgt.column2)匹配时然后更新SET tgt.column3=src.column3,tgt.column4 = src.coulmn4不匹配时然后插入 ( tgt.column1,tgt.column2,tgt.column3,tgt.column4 )值(src.coulmn1,src.coulmn2,src.coulmn3,src.coulmn4);

我想在更新时添加一些特定条件.

IF target_table.column3 in (val1','val2)

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

解决方案

您可以简单地将 WHERE 子句添加到 UPDATE.更多关于 oracle 文档的信息.>

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

<预><代码>...匹配时然后更新SET tgt.column3=src.column3,tgt.column4 = src.coulmn4WHERE tgt.column3 IN (val1, val2)不匹配时...

I have to insert/update some RECORDS in table target_table. These records are coming one source_table.

I am using MERGE for update/insert the 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);

I want to add some specific condition on update.

IF target_table.column3 in (val1','val2)

then only there should be update, else no update or insert.

解决方案

You can simply add WHERE clause to UPDATE. More about it in oracle docs.

So in your case it should look like:

...
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 语句中为 INSERT/UPDATE 添加条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆