mysql根据成绩排名次_用mysql语句 实现按成绩 排名次

mysql:查询排名sql语句查询排名思路:有点类似循环里面的自增一样,设置一个变量并赋予初始值,循环一次自增加1,从而实现排序;mysql里则是需要先将数据查询出来并先行按照需要排序的字段做好降序desc,或则升序asc,设置好排序的变量(初始值为0):a>.将已经排序好的数据从第一条依次取出来,取一条就自增加一,实现从1到最后的一个排名b>.当出现相同的数据时,排名保持不变,此时则...
摘要由CSDN通过智能技术生成

mysql:查询排名

sql语句查询排名

思路:有点类似循环里面的自增一样,设置一个变量并赋予初始值,循环一次自增加1,从而实现排序;

mysql里则是需要先将数据查询出来并先行按照需要排序的字段做好降序desc,或则升序asc,设置好排序的变量(初始值为0):

a>.将已经排序好的数据从第一条依次取出来,取一条就自增加一,实现从1到最后的一个排名

b>.当出现相同的数据时,排名保持不变,此时则需要再设置一个变量,用来记录上一条数据的值,跟当前数据的值进行对比,如果相同,则排名不变,不相同则排名自增加1

c.当出现相同的数据时,排名保持不变,但是保持不变的排名依旧会占用一个位置,也就是类似于(1,2,2,2,5)这种排名就是属于中间的三个排名是一样的,但是第五个排名按照上面一种情况是(1,2,2,2,3),现在则是排名相同也会占据排名的位置

准备数据(用户id,分数):

CREATE TABLE sql_rank ( id int(11) unsigned NOT NULL AUTO_INCREMENT, user_id int(11) unsigned NOT NULL, score tinyint(3) unsigned NOT NULL, add_time date NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

插入数据:

INSERT INTO sql_rank (user_id, score, add_time) VALUES (100, 50, '2016-05-01'), (101, 30, '2016-05-01'), (102, 20, '2016-05-01'), (103, 60, '2016-05-01'), (104, 80, '2016-05-01'), (105, 50, '2016-05-01'), (106, 70, '2016-05-01'), (107, 85, '2016-05-01'), (108, 60, '2016-05-01')

当前数据库数据࿱

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值