oracle - 与双重合并在 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);
解决方案
为什么将这一行放在 USING 查询中?
where 1=2
这将始终评估为假(因为 1 != 2)。因此,您的 USING 查询将返回零行,因此没有匹配或不匹配的内容。
如果您删除该 WHERE 子句,您的语句将执行某些操作。
推荐阅读
- java - 如何从 java 类访问 kotlin 代码
- c++ - Eclipse IDE 象形文字
- css - Live Sass 编译器不工作,文件不知何故没有链接?
- vaticle-typedb - 如何解决在 localhost:48555 加载 Grakn 模式和数据的问题?
- sql - 在 SQL 中,您可以使用 sum 和 product 计算列来强制实现无向边的唯一性吗?
- list - 一种算法来判断一个 FORKED 列表是否是循环的
- python - 我无法将标签附加到我的训练数据中
- c# - 防止 Newtonsoft JSON 反序列化器接受带有新行的字符串(强制执行严格的 JSON 规则)?
- javascript - 使用timelineMonth 视图时出现“未定义足迹”错误消息
- python - 纸浆优化问题 - 约束问题