相關和非相關查詢區別
--求各部門人數
--格式:select d.*,0 人數 from dept d
select d.*,
(select count(*) from emp e
where e.deptno=d.deptno
) 人數
from dept d
select d.* from dept d
部門:10
select count(*) from emp e where e.deptno=10
20select count(*) from emp e where e.deptno=20
30select count(*) from emp e where e.deptno=30
40select count(*) from emp e where e.deptno=40
50select count(*) from emp e where e.deptno=50
60select count(*) from emp e where e.deptno=60
對於部門表的每一條記錄,都要單獨執行一次子查詢,所以稱為相關子查詢。
列出薪金比「smith」多的所有員工
select * from emp e
where e.sal>
(select e.sal from emp e where e.ename='smith'
)smith的值只求一次,這個值對於emp中所有記錄都是一樣的,即不與各記錄相關,所以稱為非相關子查詢。
什麼是 相關子查詢 和 非相關子查詢
先執行主查詢,再針對主查詢返回的每一行資料執行子查詢,如果子查詢能夠返回行,則這條記錄就保留,否則就不保留。舉例1 相關子查詢查詢 查詢所有是領導的員工資訊 select from emp e1 where exists select from emp e2 where e1.empno e2.mg...
Mysql 非相關子查詢和相關子查詢的執行解析
前段時間有乙個相關子查詢的sql語句,看不太懂他是如何執行的,為什麼會出現那個結果。著實糾結了一把。下面來講一下非相關子查詢和相關子查詢的執行過程是怎樣的。先看乙個非相關子查詢到sql語句。需求 查詢學生表student和學生成績表grade中成績為70分的學生的基本資訊。select t.sno,...
mysql 非相關子查詢 相關子查詢一
1 子查詢在查詢語句中可出現的位置 2 子查詢的分類 3 子查詢的優化的思路 3.1 做子查詢優化的原因 3.2 子查詢優化技術 3.3 子查詢展開 4 最常見的子查詢型別的優化 4.1 in型別 4.2 all any some型別 4.3 exists型別 5 例項 二 相關子查詢和非相關子查詢...