我有一个非常简单的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以及当天的最高分,这不是我想要的
任何想法如何修复它?
答案 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)
;