获得最高分,但删除重复用户(SQL)

时间:2017-02-22 03:49:17

标签: php mysql sql

我正在开发基于时间的游戏(时间越短越好),我有一个排行榜,它将每个游戏存储到SQL数据库中。

我想从数据库中获得前15个最低(最佳)时间,但只为每个用户显示一个输出,以便显示前15个用户的最佳时间,但我似乎无法在返回所有信息时这样做。

我正在使用的查询是:

SELECT * FROM `scores` WHERE size='$size' ORDER BY `time` ASC LIMIT 15

谢谢。

3 个答案:

答案 0 :(得分:1)

SELECT * FROM (SELECT user,size,min(time) as time FROM scores
WHERE size = '10x10' 
GROUP BY user, size)
ORDER BY time
LIMIT 15

为每个用户选择最短时间,并以最低时间分数返回前15位用户。

答案 1 :(得分:1)

如果您使用user列对数据进行分组,则可以使用MIN()来确定每个用户的最低/最佳时间。最后,按BestTime ASC排序(以便首先列出较低的数字)并使用LIMIT截断结果集。

查询:

SELECT `user`, MIN(`time`) AS BestTime 
FROM `scores`
WHERE `size` = '10x10'
GROUP BY `user`
ORDER BY `BestTime`
LIMIT 15;

答案 2 :(得分:0)

你似乎想要这样的东西:

select s.*
from scores s
where s.score = (select max(s2.score) from scores s2 where s2.userid = s.userid)
order by s.score asc
limit 15;

我不知道您的示例查询中的size是什么。