我有一个非常简单的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
答案 0 :(得分:1)
答案 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;