当有多个子查询时,我怀疑相关的子查询执行情况。
当只有一个子查询时,我知道相关的子查询执行。但是,如果有多个,我无法理解。
我已经提到了很多书籍和网站,但我找不到合适的答案。
以下是两个查询。我知道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
)
QUERY2:
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’
)
)
ename
,city
被考虑。emp2
的每一行进行比较。exists
计算结果为true。然后emp1
表的ename
,city
添加了输出。ename
表格的第二行中选择city
,来自emp1
的{{1}}。请解释一下query2的执行情况,我解释了query1?
答案 0 :(得分:0)
你的第二个问题是:给我的员工是否有退出他们工作的公司(第一个子查询),以及这些公司(取自第一个子查询)是否存在于孟买(第二个子查询)中。您可以使用以下可能更有效的选择语句获得相同的结果:
select e.ename
from employee e,
emp_company ec,
company c
where e.ename = ec.ename
and ec.cname = c.cname
and c.name = 'bombay'
这就是逻辑。如果您对先生的详细信息感兴趣。 Oracle 获取您可以查看的行查询解释计划。