Php MySQL-选择时间范围内分组日期和id的行

Php MySQL-选择时间范围内分组日期和id的行,php,mysql,group-by,Php,Mysql,Group By,我在查询时遇到问题,我需要从数据库中获取一些数据 我有一个包含以下数据的表格: id user_id game_id date 1 1 1 2015-08-19 2 1 2 2015-08-19 3 1 3 2015-08-19 4 2 1 2015-08-20 5 2

我在查询时遇到问题,我需要从数据库中获取一些数据

我有一个包含以下数据的表格:

id    user_id     game_id    date
1     1           1          2015-08-19
2     1           2          2015-08-19
3     1           3          2015-08-19
4     2           1          2015-08-20
5     2           2          2015-08-20
6     1           1          2015-08-20
7     1           1          2015-08-20
8     3           1          2015-08-20
9     2           1          2015-08-21
10    1           1          2015-08-21
11    1           2          2015-08-21
12    2           1          2015-08-21
我需要获得某个日期范围内“播放”的用户总数,即2015-08-10到2015-08-22,按日期和用户id分组。 例如,根据给定的数据,结果应为:

total_players    date
1                2015-08-19
3                2015-08-20
2                2015-08-21
我在以下查询中尝试了此操作,但分组不正确:

SELECT date, COUNT(*) AS total_players 
FROM plays 
WHERE date BETWEEN '$start_date' AND '$end_date' 
GROUP BY date, user_id
有人能帮我回答正确的问题吗? 提前谢谢大家

SELECT date, COUNT(DISTINCT user_id) 
FROM plays
WHERE date BETWEEN '$start_date' AND '$end_date' 
GROUP BY date
使用您的数据在测试数据库上进行本地测试

total_players    date
1                2015-08-19
3                2015-08-20
2                2015-08-21


组中删除
user\u id
,我已经尝试过了,但我需要将同一个user\u id在一天内的重复次数计算为一次。例如,行1、2和3应计为一,因为当天的用户id相同。如果我不按用户id分组,我会得到更多的结果。不,如果你不按
用户id
分组,你会得到更少的结果记录
选择日期,计数(不同的用户id)
按日期分组
(假设日期只是日期而不是日期时间)否则,您必须将日期的格式设置为select和group by中的日期。它是datetime,但没什么,不能用date\u格式解决。是的,这是正确的,但Xeridea首先回答。无论如何,非常感谢你!
SELECT `date`, COUNT(DISTINCT user_id) AS total_players 
FROM plays 
GROUP BY `date`
SELECT `date`, COUNT(DISTINCT user_id) AS total_players 
FROM plays 
WHERE date BETWEEN '$start_date' AND '$end_date' 
GROUP BY `date`