count(1) 和count(*)的区别:
SELECT COUNT(`borndate`) FROM student; -- count字段,会忽略所有的null值 SELECT COUNT(*) FROM student; -- count(*),不会忽略null值,本质:计算行数,有多少行就返回多少数据,会把所有的列都走一遍 SELECT COUNT(1) FROM student; -- count(*),不会忽略null值,本质:计算行数,只走一列
分组过滤:
1 -- 查询不同课程的平均分,最高分,最低分,平均分大于80 2 -- 核心:(根据不同的课程分组) 3 4 SELECT subjectname, AVG(studentresult) AS 平均分 ,MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分 5 FROM result r 6 INNER JOIN SUBJECT sub 7 ON r.`subjectno` = sub.`subjectno` 8 GROUP BY r.subjectno -- 通过什么字段来分组 9 HAVING 平均分>80 -- group by 之后不能用where 只能用having来过滤