当目标表中存在源表中不存在的记录时,我们希望将 IS_DEL 位设置为 1。
是否可以使用带有 WHEN NOT MATCHED 子句的 MERGE 语句,但让它执行 UPDATE?
尝试这样做时,我收到“ORA-00905:缺少关键字”消息。
MERGE
INTO AMEPSA.ENTERPRISE_LOCATION trg
USING (
SELECT C.LOCATION_KEY as LOCATION_KEY
FROM AMEPSA.ENTERPRISE_LOCATION C
INNER JOIN AMESTAGE.VW_LOCATION L ON C.REC_SRC_KEY_CD = L.LOCATION_ID
WHERE C.CURR_REC_IND = 'Y'
) src
ON (trg.LOCATION_KEY = src.LOCATION_KEY)
WHEN NOT MATCHED THEN UPDATE
SET trg.IS_DEL = 1
“WHEN NOT MATCH”子句是否只支持“THEN INSERT”?
最佳答案
Use the MERGE statement to select rows from one or more sources for update or insertion into a table or view. You can specify conditions to determine whether to update or insert into the target table or view.
该语法在源表 (src
) 中查找与目标表 (trg
) 中匹配或不匹配的行。如果有匹配的目标行,那么它会更新它;如果没有匹配的行,则它会在目标表中插入一个新行。
它不会,也不能在目标表中查找与源表不匹配的行 - 这是您要识别和更新的内容。
WHEN MATCHED
的语法图和 WHEN NOT MATCHED
还要明确表示您不能执行 WHEN NOT MATCHED THEN UPDATE
。
关于sql - Oracle MERGE NOT MATCHED THEN UPDATE 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45619857/