區分關聯子查詢和非關聯子查詢

llnnmc發表於2019-05-21

子查詢可區分為關聯子查詢和非關聯子查詢,他們和外層查詢之間的執行順序和關係是不同的。

關聯子查詢:

在關聯子查詢中,對於外部查詢返回的每一行資料,內部查詢都要執行一次。另外,關聯子查詢的資訊流是雙向的,外部查詢的每行資料傳遞一個值給子查詢,然後子查詢為每一行資料執行一次並返回它的記錄,之後外部查詢根據返回的記錄做出決策。

select * from dept d where exists(select * from emp e where e.deptno = d.deptno);

特點:

1、先執行外層查詢

2、再執行內層查詢

非關聯子查詢:

非相關子查詢是獨立於外部查詢的子查詢,子查詢執行完畢後將值傳遞給外部查詢。

select * from emp where sal = (select max(sal) from emp);

特點:

1、先執行內層查詢

2、再執行外層查詢

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2645019/,如需轉載,請註明出處,否則將追究法律責任。

相關文章