因为知道Sql中聚合函数用在子查询中是允许的所以我这样写了一段代码
select Sno,Cno
from SC
where SC.Grade>(select AVG(SC.Grade)
from SC X,SC y
where x.Sno=y.Sno)
结果显示聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。
当我改为
SELECT Sno, Cno
FROM SC x
WHERE Grade >=(SELECT AVG(Grade)
FROM SC y
WHERE y.Sno=x.Sno)
时就能通过
所以我想知道为什么第一段代码不能通过呢,他的聚合函数也是用在了子查询中