SQL查询以获取特定人员的排名,姓名和分数

时间:2018-07-20 11:02:34

标签: php sql mysqli mariadb rank

我正在尝试从特定玩家那里获得排名,姓名和得分。

我使用此查询只是为了显示排名(我将其用于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');

但这会返回我上方玩家的得分和姓名。

请帮忙吗? :)

2 个答案:

答案 0 :(得分:1)

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

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 = ?;

答案 1 :(得分:0)

SELECT name,score, @curRank := @curRank + 1 AS rank FROM user p, (SELECT @curRank := 0) r ORDER BY  score DESC

请使用此查询进行排名计算。如果得分相同,请使用其他参数计算排名

示例:ORDER BY得分DESC,像这样的user_id描述。