我使用PHP和MySQL和我 有2个表:
人们玩游戏然后存储user_id并在每次游戏结束时在表'得分'中得分。表得分中的单个用户有很多行。
我想要什么? 我想选择具有不同user_name的前10名玩家来显示在列表中,那么正确的sql是什么?下面的代码现在是我当前的sql,但它没有显示我想要的结果。
SELECT DISTINCT * FROM score as t1
INNER JOIN user AS t2 ON t1.user_id=t2.user_id
WHERE score>0
ORDER BY t1.score DESC
LIMIT 10
这有什么错误?
答案 0 :(得分:2)
这有用吗? (未经测试)
select username, max(score) as maxscore
from score, user
where score.userid=user.userid and score>0
group by username
order by maxscore desc
答案 1 :(得分:0)
以下sql将返回按其最佳得分排序的前10名得分最高的玩家(不是得分前10名,而是前10名玩家)。
SELECT
u.user_name,
max(s.score)
FROM
score as s
INNER JOIN [user] AS u
ON s.user_id = u.user_id
WHERE
score > 0
GROUP BY
u.user_name
ORDER BY
2 DESC
LIMIT 10