繁体   English   中英

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');

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

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

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

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

例如:ORDER BY score DESC,user_id desc 之类的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM