在一个分数表中,获得一个用户在其他6个得分较高的用户和得分较低的用户之间的排名

xfyts7mz  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(369)

这个问题在这里已经有答案了

sql选择特定行周围的“窗口”(3个答案)
两年前关门了。
我有一个非常简单的mysql表,可以保存高分。看起来是这样的:

Id     Name     Score

到现在为止,一直都还不错。问题是:我如何得到一个用户的排名?当我有用户时,我如何得到一些(比如2个)得分较高的用户和2个得分较低的用户之间的排名 id .
一个例子

Id  Name    Score
1   Ida     100
2   Boo     58
3   Lala    88
4   Bash    102
5   Assem   99
6   cha     105
7   phib    30

在这种情况下,结果如下:

Id  Name    Score
4   Bash    102
1   Ida     100
5   Assem   99
3   Lala    88
2   Boo     58
egmofgnx

egmofgnx1#

ORDER BY 按所选列对查询结果排序,默认为升序。正确的查询是:

SELECT * FROM [Table] ORDER BY Score DESC

更多信息可以在这里找到。

hec6srdp

hec6srdp2#

这里有一种方法:

(select t.*
 from t
 where t.score >= (select t2.score from t t2 where t2.id = 5)
 order by score asc
 limit 3
) union all
(select t.*
 from t
 where t.score < (select t2.score from t t2 where t2.id = 5)
 order by score asc
 limit 2
)
order by score desc;

相关问题