SQL 查询特定人物的排名、姓名和分数

SQL Query to get rank, name and score from specific person

我正在尝试获取特定玩家的排名、名称和分数。

我使用此查询只是为了显示排名(我将此与 PHP 一起使用):

SELECT  count(*) + 1 AS rank
FROM scores
WHERE score > (SELECT score FROM scores WHERE name = '$name');

我也尝试通过这种方式获取名称和分数:

SELECT  name, score, count(*) + 1 AS rank
FROM scores
WHERE score > (SELECT score FROM scores WHERE name = '$name');

但是这个 returns 来自我上方玩家的分数和名字。

要获得排名其他信息,我建议使用子查询:

select s.*,
       (select count(*) + 1
        from scores s2
        where s2.score > s.score
       ) as rank
from s
where name = ?;

? 是参数名称的占位符。您还可以使用命名参数。

注意:这没有考虑关系。如果您对此感兴趣:

select s.*,
       (select count(distinct score)
        from scores s2
        where s2.score >= s.score
       ) as rank
from s
where name = ?;
SELECT name,score, @curRank := @curRank + 1 AS rank FROM user p, (SELECT @curRank := 0) r ORDER BY  score DESC

请使用此查询排名calculation.in相同分数的情况请使用另一个参数来计算排名

示例:ORDER BY score DESC,user_id desc 这样。