我正在开发基于时间的游戏(时间越短越好),我有一个排行榜,它将每个游戏存储到SQL数据库中。
我想从数据库中获得前15个最低(最佳)时间,但只为每个用户显示一个输出,以便显示前15个用户的最佳时间,但我似乎无法在返回所有信息时这样做。
我正在使用的查询是:
SELECT * FROM `scores` WHERE size='$size' ORDER BY `time` ASC LIMIT 15
谢谢。
答案 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
是什么。