MySQL - 计算记录并列出人员

时间:2017-01-31 19:56:45

标签: mysql database

我有结果表:

date        | user_id | content
-----------------------------------------
2017-01-14  | 1       | lorem
2017-01-02  | 2       | dsfdf
2017-01-02  | 1       | asfds dsfsda
2017-01-27  | 3       | sdfdfds fsdf

我想为所有用户计算行数并收到如下结果:

user_id     | count
-----------------------------------------
1           | 2
2           | 1
3           | 1

我试试:

select distinct(user_id), count(*) from aso_repairs where date like '2017-01-%'

但这不起作用;-(任何帮助?

2 个答案:

答案 0 :(得分:1)

使用GROUP BY子句:

SELECT 
    user_id, 
    count(user_id) 
FROM aso_repairs 
WHERE 
    date LIKE '2017-01-%' 
GROUP BY user_id

你不应该使用count(*),至少在MySQL 3.23中,这比count(somecolumn)贵得多,尽管它会产生相同的结果。

答案 1 :(得分:0)

按子句添加缺少的组:

SELECT 
    user_id, COUNT(*)
FROM
    aso_repairs
WHERE
    date LIKE '2017-01-%'
GROUP BY user_id;

此外,如果日期列中有一个索引,like运算符将不允许您使用任何索引。考虑提供实际的日期边界:

SELECT 
    user_id, COUNT(*)
FROM
    aso_repairs
WHERE
    date BETWEEN '2017-01-01' AND '2017-01-31'
GROUP BY user_id;