[英]Adding conditions in MERGE statement in Oracle SQL for INSERT/UPDATE
I have to insert/update some RECORDS in table target_table.我必须在表 target_table 中插入/更新一些记录。 These records are coming one source_table.这些记录来自一个 source_table。
I am using MERGE for update/insert the target_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);
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
.您可以简单地将WHERE
子句添加到UPDATE
。 More about it in oracle docs. 在 oracle 文档中有更多关于它的信息。
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
...
Instead Try Doing As below:而是尝试执行以下操作:
MERGE
INTO target_table tgt
USING source_table src
ON (src.column1 = tgt.column1)
WHEN MATCHED
THEN
UPDATE
SET tgt.column3= src.column3,
tgt.column4 = src.coulmn4
WHERE src.column1 = tgt.column1 and
src.column2 = tgt.column2
WHEN NOT MATCHED
THEN
INSERT ( tgt.column1,
tgt.column2,
tgt.column3,
tgt.column4 )
VALUES ( src.coulmn1,
src.coulmn2,
src.coulmn3,
src.coulmn4);
I have to insert/update some RECORDS in table target_table.我必须在表target_table中插入/更新一些记录。 These records are coming one source_table.这些记录是一个source_table。
I am using MERGE for update/insert the target_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);
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.那么就应该只有更新,否则就没有更新或插入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.