MySQL中的DISTINCT和GROUP BY都是用来去除重复数据的,但它们之间有一些区别。
- DISTINCT用于返回不同的值,而GROUP BY则用于将数据分组并对每个组执行聚合函数操作。
- GROUP BY可以将查询结果按照指定列进行分组,同时也可以对每个组执行聚合函数操作,例如SUM、AVG等。而DISTINCT只能简单地过滤掉重复的行。
- 使用GROUP BY时,SELECT子句中必须包含至少一个聚合函数或者每个非聚合列都必须出现在GROUP BY子句中。而使用DISTINCT时,则不需要这样做。
- 在性能方面,通常情况下使用DISTINCT比使用GROUP BY要快一些。
举例说明:
假设我们有以下表格:
+----+---------+--------+
| id | name | score |
+----+---------+--------+
| 1 | Alice | 90 |
| 2 | Bob | 85 |
| 3 | Charlie | 80 |
| 4 | David | 85 |
| 5 | Emma | 90 |
+----+---------+--------+
如果我们想要得到不同的成绩,则可以使用DISTINCT关键字:
SELECT DISTINCT score FROM table_name;
-- 结果:90,85,80
如果我们想要根据成绩进行分组,并计算每个分数段内的平均分数,则可以使用GROUP BY关键字:
SELECT score, AVG(score) FROM table_name GROUP BY score;
-- 结果:
-- 80 | 80.0000
-- 85 | 85.0000
-- 90 | 90.0000
总之,DISTINCT用于简单地去重,而GROUP BY则更适合进行分组和聚合操作。




