从列表中为每个帐户ID获取一行

Ken*_*zie 6 mysql sql database

我有一个包含游戏分数的表格,每个帐户ID允许多行:scores (id, score, accountid).我想要一份前十名得分手ID和他们的分数列表.

你能提供一个sql语句来选择前10个分数,但每个账号只能得一分吗?

谢谢!

Ecl*_*pse 2

首先将选择限制为每个帐户 ID 的最高分数。然后取前十名的分数。

SELECT TOP 10 AccountId, Score
FROM Scores s1
WHERE AccountId NOT IN 
    (SELECT AccountId s2 FROM Scores 
     WHERE s1.AccountId = s2.AccountId and s1.Score > s2.Score)
ORDER BY Score DESC
Run Code Online (Sandbox Code Playgroud)

  • 对于此查询,我剩下的唯一问题是,当该帐户多次出现其最高分时,每个帐户 ID 会得到不止一行。因此,如果 accoundid 6 的分数为 50、75、40、75,则查询将返回分数均为 75 的两行。 (2认同)