在 MySQL 中,GROUP BY 和 DISTINCT 都是用来处理查询结果中的重复数据,并且在官方的描述文档中也可以看出: 在大多数情况下 DISTINCT 是特殊的 GROUP BY ,如下图所示:
官方文档地址: https://dev.mysql.com/doc/refman/8.0/en/distinct-optimization.html
但二者还是有一些细微的不同,接下来一起来看。
1.DISTINCT 介绍
- 用途 :DISTINCT 用于从查询结果中去除重复的行,确保返回的结果集中每一行都是唯一的。
- 语法 :通常用于 SELECT 语句中,紧跟在 SELECT 关键字之后。例如以下 SQL:
SELECT DISTINCT column1, column2 FROM table_name;
- 工作机制 :DISTINCT 会对整个结果集进行去重,即只要结果集中的某一行与另一行完全相同,就会被去除。
2.GROUP BY 介绍
- 用途 :GROUP BY 主要用于对结果集按照一个或多个列进行分组,通常与聚合函数(如 COUNT, SUM, AVG, MAX, MIN 等)一起使用,以便对每个组进行统计。
- 语法 :GROUP BY 通常跟在 FROM 或 WHERE 子句之后,在 SELECT 语句的末尾部分。例如以下 SQL:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;