mysql 排序,利用变量实现 显示排序序号

:= 与 = 的区别:

1 。 “ := ” 赋值的意思 。 set 和 update 时, 但是一般都用 “ = ” 。 select 时 只能使用“ := ”方式
2.。“ = ” set 和 update时 ,表示赋值。select 时 , 表示是判断。

--  @i 是对一个叫 i 的参数进行赋值。
-- 按分数进行排序,并显示排名
set @i = 0;
select 
student_id as 学生id,
score as 分数,
@i := @i + 1 as 排名序号
from tb_score order by score
-- 按分数进行排序,并显示排名, Score重复时合并名次
-- 变量i(序号) 和 变量sco(分数)
-- 方法一:
set @i = 0;
set @sco = null;
select 
student_id,
score,
case when @sco = score then @i 
	 when @sco := score then @i := @i + 1 end as 排名序号
from tb_score  ORDER BY score desc

-- 方法二:
set @i = 0;
set @sco = null;
select 
student_id,
score,
case when @sco = score then @i else @i := @i + 1 end as 排名序号,
@sco := score
from tb_score where course_id = 1 ORDER BY score desc

-- 按分数进行排序,并显示排名,Score 重复时保留名次空缺
set @i = 0;
set @sco = null;
select 
student_id,
score,
case when @sco = score then '' else @i := @i + 1 end as 排名序号,
@sco := score
from tb_score where course_id = 1 ORDER BY score desc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值