你的浏览器不支持canvas

做你害怕做的事情,然后你会发现,不过如此。

MySQL排序后查询排名

时间: 作者: 黄运鑫

本文章属原创文章,未经作者许可,禁止转载,复制,下载,以及用作商业用途。原作者保留所有解释权。


例子如下

问题

需要按总分数排序后,获取某个用户的得分和排名
表名为vt_train_join,表内容如下:

id user_id total_score
1 2 30
2 5 20
3 3 50
4 6 40
5 1 60
6 4 10

答案

sql语句如下(查找user_id为47的用户排名和总分):

SELECT rank,sum_score FROM (SELECT *,(@rank\:=@rank+1) AS rank 
FROM (SELECT user_id,SUM(total_score) AS sum_score 
FROM vt_train_join GROUP BY user_id ORDER BY sum_score DESC) tj,
(SELECT (@rank\:=0)) r) e WHERE user_id=47

注:因为同一个user_id可能有多条数据,所以先对user_id进行了分组


对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。