Mysql的 相關子查詢中使用統計函式求平均值,
--1 整張表的結果集
select E.*
from emp E;
---------------------------------------------------
--2 求平均值
select avg(E.sal)
from emp E;
---------------------------------------------------
--3 非相關子查詢中求平均值
select E1.*
from emp E1
where E1.sal<=(
select avg(sal)
from emp
);
---------------------------------------------------
--4 相關子查詢中求平均值
select E1.*
from emp E1
where E1.sal <=(
select avg(E2.sal) --?????為什么是求全表的平均值,
from emp E2
where E2.deptno=E1.deptno
);
---------------------------------------------------
在--4 相關子查詢中求平均值 中的疑問:
外層每掃描一行記錄,將相關欄位傳遞給內層子查詢的where的條件子句中,
那么當掃描到 第n 行的時候, 求得平均值不應該是 前n 行的相關欄位的平均值么,
但是為什么實際上是 整張表的相關欄位的平均值呢,求助探討.
----------------------------------------------------------------------------------
uj5u.com熱心網友回復:
相關子查詢計算的物件是與外層匹配上的行轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/86703.html
標籤:MySQL
