排名排行榜-MySQL

萨米尔·苏汉

我有这样的桌子

+-----+-------+
| pid | score | 
+-----+-------+      
|   1 |    120|          
|   2 |    130|    
|   3 |    100|    
|   1 |    120|        
|   2 |    130|    
|   3 |    100|      
+-----+-------+

我试图让我的用户排名。目前,我正在使用此查询,

SELECT pid
     , SUM(score) AS total_score
  FROM score 
 GROUP 
    BY pid 
 ORDER 
    BY total_score DESC

我在此查询中得到按分数排序的列表,但没有得到它们的位置。我想要这样的东西

+-----+-------+------+
| pid | score | rank |
+-----+-------+------+       
|   2 |    260|    1 |       
|   1 |    240|    2 |
|   3 |    200|    3 |       
+-----+-------+------+

我可以为特定用户获得这个职位吗?喜欢

+-----+-------+------+
| pid | score | rank |
+-----+-------+------+       
|   1 |    240|    2 |        
+-----+-------+------+

我正在使用MySQL 5.7.21。你能帮忙吗?

A.专栏

如果您有机会进入Mysql 8.0.2或更高版本,您将获得函数排名。

其他可以使用变量来设置等级:

SELECT pid,
       total_score,
       @curRank := @curRank + 1 AS rank
FROM
    (SELECT pid,
            sum(score) AS total_score
     FROM score
     GROUP BY pid
     ORDER BY total_score DESC) datas, (SELECT @curRank := 0) r

您可以在之后进行筛选,以仅获取所需pid的结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章