“Exists 的执行逻辑解释”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“1”的新页面) |
Jihongchang(讨论 | 贡献) |
||
第1行: | 第1行: | ||
− | + | <syntaxhighlight lang="sql"> | |
+ | select a.* | ||
+ | from dual a | ||
+ | where exists (select * from dual b where a.dummy = b.dummy); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === 首先 === | ||
+ | 先查询的并不是括号中子查询的内容 | ||
+ | |||
+ | === 而是 === | ||
+ | 主查询的表 <code>select a.* from dual</code> | ||
+ | |||
+ | === 然后 === | ||
+ | 根据表的每一条记录,执行语句 <code>exists (select * from dual b where a.dummy=b.dummy)</code>,依次去判断 where 后面的条件是否成立,如果成立则返回 true;不成立则返回 false。如果返回的是 true,则该行结果保留,如果返回的是 false,则删除该行 | ||
+ | |||
+ | === 最后 === | ||
+ | 将得到的结果返回 |
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,则删除该行
最后
将得到的结果返回