sql - SQL Query 获取特定人员的排名、姓名和分数
问题描述
我正在尝试从特定玩家那里获得排名、姓名和得分。
我使用这个查询只是为了显示排名(我在 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 = ?;
推荐阅读
- python - 为什么我不能更改 seaborn clustermap 中的刻度值?
- c# - 在字典 .net 中附加一个值
- matlab - 查找信号和阈值中的转换(使用 Octave)
- flutter - Flutter:淡入非网络图像
- python - 如何在 Try Catch 中停止下一个单元格执行(Colab / autosklearn)
- flutter - FutureBuilder 完全没有反应
- selenium - 在 gitlab-ci 中运行黄瓜硒测试
- cloudera - 从命令行部署一个新的 Flume 代理
- c# - 为什么从一个到另一个工作的相对路径不正确?
- sql - Concat 和 join 以显示数据库中所有类的总和和最大值