首页 > 解决方案 > 与双重合并在 12c 中不起作用

问题描述

嗨,我使用的是 Oracle 12c,我执行了以下查询,该查询返回 0 行合并。请告知我是否做错了什么。

该表cons_temp包含两列, name, value

 merge into cons_temp tb
 using (select 'Freez' as NAME, 'NOI' as VALUE from dual where 1=2) v
 on (tb.NAME=v.NAME)
 when matched then update set tb.VALUE=v.VALUE
 when not matched then insert (NAME,VALUE) values(v.NAME, v.VALUE);

标签: oraclemerge

解决方案


为什么将这一行放在 USING 查询中?

where 1=2

这将始终评估为假(因为 1 != 2)。因此,您的 USING 查询将返回零行,因此没有匹配或不匹配的内容。

如果您删除该 WHERE 子句,您的语句将执行某些操作。


推荐阅读