有人可以請解釋以下查詢之間的區別。子查詢中的連接看起來相同,但第一次運行正常,第二次沒有。在第二個查詢中,子查詢似乎無法訪問別名表e。內部加入子查詢
QUERY1
select e.ename
,e.deptno
,(
select count(*)
from emp d
where e.deptno = d.deptno
) dept_cnt
from emp e
order by 2;
QUERY 2
select e.ename
,e.deptno
,(
select count(*)
from emp d
inner join e
ON d.deptno = e.deptno
) dept_cnt
from emp e
order by 2;
是不是查詢1中的子查詢與表別名(e)的內部聯接? – tp9
否。在查詢1中,您正在通過where子句對錶emp(內部)進行限制。限制使用表emp(外部)來選擇所需的信息。 –
好的,謝謝你的澄清。它清除了很多混亂。 – tp9