首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle子查询趣味性

Oracle子查询趣味性
EN

Stack Overflow用户
提问于 2018-02-22 20:11:47
回答 1查看 79关注 0票数 2

想象一个查询

代码语言:javascript
复制
SELECT Col_A FROM TABLE_A WHERE Col_A IN (SELECT Col_A FROM TABLE_B) 

除了,TABLE_B没有Col_A列;只有TABLE_A有它。我在Oracle12中尝试过这种方法,但我不确定它的版本有多远,但它似乎返回了显示来自TABLE_A的所有TABLE_A数据的有效结果。作为一个开发人员,我希望这样的东西会引发错误,因为内部查询甚至不会再次访问TABLE_A。有人能解释为什么或在哪里使用像上面这样的查询情况,因为我几乎觉得它应该是系统中的一个bug。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-22 20:17:00

这不是虫子。由于您没有限定该列,Oracle将其解释为表A中的当前列值--该表位于范围内(cf )。(a 相关子查询)。因此,子查询只产生与表B中的行相同的列值的重复项。

基于此,in条件将变为true或false。当表B为空时,它始终是假的。在Col_A为null的情况下,它也将是假的。但在所有其他情况下,这将是真实的。因此,您将得到与表A中有非空值的Col_A中的行相同的结果,除非表B是空的,在这种情况下没有得到结果。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48936370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档