php - 选择在给定日期得分最高的用户

标签 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 ,它应该返回 userid 1

在 2017-10-01 ,它应该返回 userid 2(因为分数更高)

在 2017 年 10 月 2 日,它将返回用户 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 返回 userid 1(正确)

于 2017 年 10 月 1 日。返回userid 1和userid 2以及他们当天的最高分,这不是我想要的

知道如何解决吗?

最佳答案

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)
;

关于php - 选择在给定日期得分最高的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47034929/

相关文章:

php - MySQL创建的线程快速增长

php - PDO bindParam 不工作 "bindParam() on a non-object"

php - 从多行中选择时 MySQL 性能缓慢

mysql - 从 MySQL 数据库的一个表中搜索一列并返回不同的列

mysql - sql select 多次返回同一组行

php - 通过php控制css

php - 如何在 Slim Framework 中使用 Laravel illuminate 的数据库

php - 检测编码并使一切变为 UTF-8

Java hibernate 在读取时截断 MySQL 日期时间的时间部分

php - 创建表sql失败