什麼是 相關子查詢 和 非相關子查詢

2021-10-09 05:46:25 字數 715 閱讀 9664

先執行主查詢,再針對主查詢返回的每一行資料執行子查詢,如果子查詢能夠返回行,則這條記錄就保留,否則就不保留

--舉例1:相關子查詢查詢:查詢所有是領導的員工資訊

select

*from emp e1 where

exists

(select

*from emp e2 where e1.empno=e2.mgr)

;--舉例2:相關子查詢查詢:查詢有員工的部門的資訊

select

*from dept d1 where

exists

(select

*from emp e1 where e1.deptno=d1.deptno)

;--換言之:相關子查詢的執行 *依賴* 於 *外部查詢*(主查詢) 的資料,外部查詢執行一行,*子查詢* 就執行一次。

非相關子查詢執行順序是先執行子查詢,再執行主查詢。

select

*from emp where empno in

(select mgr from emp)

;總結:

mysql 非相關子查詢 相關子查詢一

1 子查詢在查詢語句中可出現的位置 2 子查詢的分類 3 子查詢的優化的思路 3.1 做子查詢優化的原因 3.2 子查詢優化技術 3.3 子查詢展開 4 最常見的子查詢型別的優化 4.1 in型別 4.2 all any some型別 4.3 exists型別 5 例項 二 相關子查詢和非相關子查詢...

Mysql 非相關子查詢和相關子查詢的執行解析

前段時間有乙個相關子查詢的sql語句,看不太懂他是如何執行的,為什麼會出現那個結果。著實糾結了一把。下面來講一下非相關子查詢和相關子查詢的執行過程是怎樣的。先看乙個非相關子查詢到sql語句。需求 查詢學生表student和學生成績表grade中成績為70分的學生的基本資訊。select t.sno,...

Oracle 相關子查詢

start 我們先來看兩個表的定義 使用者 create table employee userid number 9,0 not null,使用者id companyid number 9,0 公司id telno varchar2 12 使用者 alter table employee add ...