Exists 的执行逻辑解释

来自姬鸿昌的知识库
Jihongchang讨论 | 贡献2023年8月15日 (二) 02:23的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索
select a.*
from dual a
where exists (select * from dual b where a.dummy = b.dummy);

首先

先查询的并不是括号中子查询的内容

而是

主查询的表 select a.* from dual

然后

根据表的每一条记录,执行语句 exists (select * from dual b where a.dummy=b.dummy),依次去判断 where 后面的条件是否成立,如果成立则返回 true;不成立则返回 false。如果返回的是 true,则该行结果保留,如果返回的是 false,则删除该行

最后

将得到的结果返回