DISTINCT
在Mysql中表示对整个select结果集记录过滤去重
,而不是对某个字段去重
。
场景
一张学生成绩表中,一个学生可以有0到多门成绩。
- 现在需要统计有多少学生参加了考试。
SELECT distinct name
FROM COURSE
- 现在统计参加考试的学生中,成绩最低的分数是多少分?(因为GROUP BY 必须包含SELECT中非聚合函数的字段)
SELECT DISTINCT NAME, MIN(SCORE)
FROM COURSE
GROUP BY NAME
- 统计参加考试的学生中,成绩最高的科目是什么?分数是多少?(小技巧:给course加上聚合函数,使得不需要包含在group by中)
SELECT DISTINCT name, MAX(COURSE),MAX(score)
FROM SC
GROUP BY name