Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在分数表中,将一个用户的排名设置为6个其他用户之间,其中2个得分较高,2个得分较低_Mysql_Sql_Rank - Fatal编程技术网

Mysql 在分数表中,将一个用户的排名设置为6个其他用户之间,其中2个得分较高,2个得分较低

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

我有一个非常简单的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
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到分数非常容易。。。