在 Oracle SQL 的 MERGE 语句中为 INSERT/UPDATE 添加条件 [英] Adding conditions in MERGE statement in Oracle SQL for INSERT/UPDATE
本文介绍了在 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屋!
查看全文