在分数表中获得6个其他用户的等级,其中2个较高分数和2个较低分数

时间:2018-01-09 23:11:19

标签: mysql sql rank

我有一个非常简单的MySQL表,我保存了高分。它看起来像是:

Id     Name     Score

到目前为止一切顺利。问题是:我如何获得用户排名?当我有用户id时,如何让用户在具有较高分数的用户(如2个)和具有较低分数的2个用户之间进行排名。

示例

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

2 个答案:

答案 0 :(得分:1)

ORDER BY按您选择的列对查询结果进行排序,默认为升序。正确的查询将是:

SELECT * FROM [Table] ORDER BY Score DESC

可以找到更多信息here

答案 1 :(得分:0)

这是一种方法:

(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;