在给定的日期选择具有最高分的用户

时间:2017-10-31 12:01:22

标签: php mysql

我有一个非常简单的sql表(SCORES),只有一个表,没有JOIN:

userid    score   date
|1       1     2017-09-31
|1       1     2017-10-01
|2       2     2017-10-01
|1       2     2017-10-02
|2       2     2017-10-02
|3       1     2017-10-02

我想在给定的一天选择最高分的用户ID,所以

2017-09-31,它应该返回用户ID 1

2017-10-01,它应返回用户ID 2(因为得分较高)

在2017-10-02,它将同时返回用户ID 1和2(因为两个分数均为2)

我试过这个mysql但是没有正常工作:

SELECT user_id, MAX(score) AS hiscore, date
FROM scores 
WHERE date =:date
GROUP BY user_id
ORDER BY hiscore DESC

我得到了这个:

2017-09-31返回用户ID 1(正确)

2017-10-01。返回用户ID和用户ID 2以及当天的最高分,这不是我想要的

任何想法如何修复它?

1 个答案:

答案 0 :(得分:1)

SELECT Group_concat(user_id separator ','), score AS hiscore, date
FROM scores 
WHERE date =:date
and (score) in
                  (select max(score) from scores group by date)
;