MySQL中 GROUP BY 语句在SELECT语句中没有聚合函数时的行为


<!–

–>

MySQL中 GROUP BY 语句在SELECT语句中没有聚合函数时的行为

在MySQL中,GROUP BY语句通常用于对SELECT语句的结果进行分组处理。而在SELECT语句中,如果没有使用聚合函数,那么对于GROUP BY语句的影响将与使用聚合函数时略有不同。

阅读更多:

没有使用聚合函数时的GROUP BY语句

当SELECT语句中没有使用聚合函数时,GROUP BY语句将会根据指定的列对结果集进行分组处理,并将相同结果的行合并。例如,我们有一张名为“students”的表,其中记录了学生的基本信息及其所属的学院:

(adsbygoogle = window.adsbygoogle || []).push({});

| id | name   | age | gender | college            |
|----|--------|-----|--------|--------------------|
| 1  | Alice  | 18  | female | School of Medicine |
| 2  | Bob    | 19  | male   | School of Law      |
| 3  | Cathy  | 20  | female | School of Medicine |
| 4  | David  | 19  | male   | School of Law      |
| 5  | Emily  | 18  | female | School of Medicine |
| 6  | Frank  | 20  | male   | School of Science   |
| 7  | George | 21  | male   | School of Science   |

如果我们想要按照各个学院进行分组,那么可以这样写:

SELECT college FROM students GROUP BY college;

这将会返回以下结果:

| college            |
|--------------------|
| School of Medicine |
| School of Law      |
| School of Science  |

使用聚合函数时的GROUP BY语句

与没有使用聚合函数不同,当SELECT语句中使用聚合函数时,GROUP BY语句将会根据指定的列对结果集进行分组处理,并对每组数据应用聚合函数进行计算。例如,如果我们想要计算每个学院的平均年龄,可以这样写:

SELECT college, AVG(age) FROM students GROUP BY college;

这将会返回以下结果:

| college            | AVG(age) |
|--------------------|----------|
| School of Medicine | 18.67    |
| School of Law      | 19.5      |
| School of Science  | 20.5      |

总结

无论SELECT语句中是否使用聚合函数,GROUP BY语句都可以对结果集进行分组处理,但其行为略有不同。

当SELECT语句中没有使用聚合函数时,GROUP BY语句仅仅将结果集按照指定的列进行分组而已。

(adsbygoogle = window.adsbygoogle || []).push({});

当SELECT语句中使用聚合函数时,GROUP BY语句将对结果集进行分组处理,并对每组数据应用聚合函数进行计算。