Mysql 在分数表中,将一个用户的排名设置为6个其他用户之间,其中2个得分较高,2个得分较低
我有一个非常简单的MySQL表,可以保存高分。看起来是这样的:Mysql 在分数表中,将一个用户的排名设置为6个其他用户之间,其中2个得分较高,2个得分较低,mysql,sql,rank,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
到目前为止还不错。问题是:我如何获得用户排名?当我有用户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
ORDER BY按所选列对查询结果进行排序,默认为升序。正确的查询应该是:
SELECT * FROM [Table] ORDER BY Score DESC
可以找到更多信息。这里有一种方法:
(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;
你试过什么?你知道别人之间的订单吗;不完全是另外6个人:我知道order by,但这个案子不能解决,使用union解决了问题的一方面。另一方面是我没有分数。我只有idi只是没有idscore@user3084088不确定这是否相关,但在SQL中,从id到分数非常容易。。。