mysql分组后组内排序 mysql分组为啥能去重

导读:在MySQL中,分组(Group by)是一个非常重要的操作 , 它可以将数据按照指定的列进行分组,并对每个分组进行聚合操作 。而在分组的同时,也会自动去除重复的记录,这是为什么呢?
1. 分组的基本原理
分组操作是通过对指定的列进行分组,将相同值的行归为一组,在这些组内进行聚合计算 , 得到每个组的统计结果 。例如以下表格:
| 学生姓名 | 学科 | 成绩 |
| -------- | ---- | ---- |
| 小明 | 数学 | 85 |
| 小红 | 英语 | 90 |
| 小明 | 英语 | 80 |
| 小红 | 数学 | 95 |
如果我们想要求出每个学生的平均成绩 , 可以使用如下SQL语句:
SELECT 学生姓名, AVG(成绩) FROM 表名 GROUP BY 学生姓名;
这条语句将会把所有学生的成绩按照姓名进行分组,然后对每个分组进行平均值计算,得到以下结果:
| 学生姓名 | AVG(成绩) |
【mysql分组后组内排序 mysql分组为啥能去重】| -------- | --------- |
| 小明 | 82.5 |
| 小红 | 92.5 |
2. 去重的原理
在进行分组操作的时候,MySQL会自动去重 , 只保留每个分组的第一条记录 。这是因为在进行聚合计算的时候,每个分组只需要保留一个代表即可,其他的记录都可以忽略 。
例如,对于以上的例子 , 如果我们使用以下SQL语句:
SELECT 学生姓名, 学科, AVG(成绩) FROM 表名 GROUP BY 学生姓名;
那么得到的结果将会是:
| 学生姓名 | 学科 | AVG(成绩) |
| -------- | ---- | --------- |
| 小明 | 数学 | 85 |
| 小红 | 英语 | 90 |
这是因为MySQL会自动去重,只保留每个分组的第一条记录 。
总结:MySQL中的分组(Group by)操作可以将数据按照指定列进行分组,并对每个分组进行聚合计算 。而在分组的同时,MySQL也会自动去重,只保留每个分组的第一条记录 。这是因为在进行聚合计算的时候,每个分组只需要保留一个代表即可,其他的记录都可以忽略 。

    推荐阅读