我必须在表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
- ...