MySQL 实现排名
原文首发于公众号「Python面面观」小鱼。
由于mysql5.7 版本及部分公司数据库是不支持开窗函数的,但是排名问题又是工作中经常会面对的需求,因此我们可以借助 sql 中的变量来实现这一排名功能。以下为变量的基本说明:
说明:
定义变量:在 sql 语句中,通常会使用@开头来定义一个局部变量。如:@rank
@rank := @rank + 1 :其中 := 是赋值的作用,这句话的意思是先执行 @rank + 1,然后把值赋给@rank,从而实现排名功能。
赋值:(SELECT @rank := 0) r :使用select将0作为rank字段的初始值,方便后续排序从1开始。
使用case when then end 进行多条件判断
在数据库中创建表:
在表中插入数据:
对学生的score进行降序排列(不并列查询),先查询,再排序:
image.png
如果学生成绩相同,排名相同(并列查询):
image.png
版权声明: 本文为 InfoQ 作者【黄大路】的原创文章。
原文链接:【http://xie.infoq.cn/article/673511377bc0e77a51b7bea0e】。文章转载请联系作者。
评论