58

以前可能有人问过这个问题,但是我无法通过无数的搜索结果。

给定一个非规范化的 MySQL 表,计算使用 x 列的每个不同值的次数的最优化查询是什么?

例如,给定一个包含

mike
mary
mike

返回结果如:

mike 2
mary 1

从 MySQL 文档来看,这似乎count是一个可以与 一起使用的聚合函数GROUP BY,但它没有做我想要的(它返回 中的总行数GROUP BY,而不是每行的出现次数。即这不是工作SELECT count(email) as c FROM orders GROUP BY email

4

4 回答 4

100
select email, count(*) as c FROM orders GROUP BY email
于 2012-04-17T22:13:49.970 回答
25
SELECT column_name, COUNT(column_name)
FROM table_name
GROUP BY column_name
于 2012-04-17T22:15:04.627 回答
2

看一下按功能分组。

group by 函数所做的几乎是对给定字段的相似值进行分组。然后,您可以使用 COUNT 函数显示该值被分组的次数。

MySQL 文档

您还可以将 group by 函数与 MySQL 定义的大量其他函数一起使用(参见上面的链接)。

mysql> SELECT student_name, AVG(test_score)
    ->        FROM student
    ->        GROUP BY student_name;
于 2012-04-17T22:18:11.607 回答
0
select name, count(*) from table group by name;

我认为应该这样做

于 2012-04-17T22:14:30.143 回答