标题: MySQL:GROUP BY 分组查询 [打印本页] 作者: 半亩花草 时间: 2024-8-28 18:09 标题: MySQL:GROUP BY 分组查询 分组查询是SQL中一个非常强大的功能,它允许我们将数据按照一个或多个字段举行分组,并对每个分组举行聚合计算(如求和、平均值、最大值、最小值等)。在MySQL中,我们使用 GROUP BY 关键字来实现分组查询。
核心语法
HAVING 子句(可选):在分组后对分组结果举行筛选。留意,HAVING通常与聚合函数一起使用,因为WHERE子句无法直接对聚合函数的结果举行筛选。
ORDER BY 子句(可选):对查询结果举行排序。
执行顺序
MySQL 会在 FROM 和 WHERE 语句之后,HAVING, SELECT, DISTINCT, ORDER BY 和 LIMIT 子句之前执行 GROUP BY :
单独使用 GROUP BY
单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录,相当于 DISTINCT。DISTINCT 相当于一种特别的分组查询。
与 DISTINCT 差别的是,GROUP BY 会对结果举行排序,而 DISTINCT 不会。如果二者一同使用,查询结果会举行排序。
MySQL 8.0删除了GROUP BY子句的隐式排序。因此,如果使用MySQL 8.0+,会发现上面使用GROUP BY子句查询的结果集没有排序。
GROUP 和 GROUP_CONCAT() 函数
GROUP BY 关键字可以和 GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。