MySQL-为得分相同的用户分配相同的排名

MySQL-为得分相同的用户分配相同的排名,mysql,Mysql,我之前问过一个问题,关于从玩家列表中生成一个排名表,其中包含前3名的分数,以及登录用户的分数。查询如下所示: SELECT * FROM ( SELECT a.* , @rank := @rank+1 rank FROM users a JOIN (SELECT @rank:=0) vars ORDER BY highscore DESC , userid

我之前问过一个问题,关于从玩家列表中生成一个排名表,其中包含前3名的分数,以及登录用户的分数。查询如下所示:

SELECT *
  FROM 
     ( SELECT a.*
            , @rank := @rank+1 rank
         FROM users a
         JOIN (SELECT @rank:=0) vars
        ORDER 
           BY highscore DESC
            , userid 
     ) x
 WHERE name = 'jennie'
    OR rank <= 3
     ORDER 
        BY rank;

我能想到的与你的答案最接近的解决方案如下

SELECT a.userid, a.name, a.highscore,
FIND_IN_SET( a.highscore, 
    (SELECT GROUP_CONCAT( highscore ORDER BY highscore DESC) FROM my_table )) AS rank
FROM my_table a;
这里的函数用于聚合有序字符串中的所有高分,然后使用该函数,我们可以从所选聚合结果中找到所需分数的位置。

尝试以下操作:

SELECT *,
(SELECT COUNT(DISTINCT highscore) FROM my_table r
WHERE s.highscore<=r.highscore) as rank
FROM my_table s
order by rank ASC

这取决于你,但我认为像这样储存领带更常见:1,1,3,4,4,4,7
SELECT *,
(SELECT COUNT(DISTINCT highscore) FROM my_table r
WHERE s.highscore<=r.highscore) as rank
FROM my_table s
order by rank ASC