下面两个SQL代码哪个对?为什么

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:04:47
第一种:
SELECT 学号 SUM(成绩) AS 总分
FROM 学生成绩表
WHERE SUM(成绩)〉400
GROUP BY 学号

第二种:
SELECT 学号 SUM(成绩) AS 总分
FROM 学生成绩表
GROUP BY 学号 HAVING SUM(成绩)〉400
为什么第一种不好?

第二个对。
第一个是错误的,where里面不能对聚合的字段进行限制,如果需要对聚合的字段进行限制,需要写到having里。
【补充】
MS SQL Server 2005会提示这样的消息:
聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。

第2中的效果比较理想

闪人