当有多个子查询时,我对相关子查询执行有疑问。
当只有一个子查询时,我知道相关子查询的执行。但是,如果有多个我无法理解。
我参考了许多书籍和网站,但找不到合适的答案。
下面是两个查询。我知道 query1 是如何执行的,但 query2 是如何执行的?
查询1:
select e.ename, e.city
from emp1 e
where exists ( select f.ename
from emp2 f
where f.ename = ’ajay’
and e.city = f.city
)
查询2:
select e.ename
from employee e
where exists ( select ‘x’
from emp_company c
where e.ename = c.ename
and exists ( select ‘x’
from company m
where c.cname = m.cname
and m.city = ’bombay’
)
)
- 在执行 query1 的第一步中
ename
,city
考虑了员工表的第一行。 - 在 query1 执行的第二步中,将主查询中考虑的城市与 的每一行进行比较
emp2
。 - 将主查询中的城市与 emp2 的每一行进行比较;如果任何行满足将行 ename 添加到列表的条件。
- 形成的列表返回到主查询。
- 如果返回的列表不为空,则
exists
计算结果为 true。然后emp1
表的ename
,city
添加输出。 - , from是从表的第二行中选择
ename
的。city
emp1
emp1
您能否像我解释 query1 一样解释 query2 的执行?