mysql 中关于获取行号@rownum:=@rownum+1

9 篇文章 0 订阅

mysql中没有获取行号的函数,因此需要通过一些自定义语句来进行获取。通常做法是,通过定义用户变量@rownum来保存表中的数据。通过赋值语句@rownum:=@rownum+1来累加达到递增行号。

例如:select a.* ,@rownum:=@rownum+1 from a,(select @rownum:=0) r; 后半部分语句的select @rownum:=0 相当于创建了r的新表,其表的列为@rownum,数值为0.

通过利用变量将@rownum的行进行重新赋值,并显示。可以应用于获取行号或名次排列。

另外,在名次排列时,由于会有重复的数据,排列时仅仅按照,@rownum:=@rownum+1。排序是不对的,需要在数据相同时,名次应该相同。因此需要另一变量保存上次的数据,并进行与本行数据对比,相同 序号不变,不同序号应该等于行号。此时需要应用到case when进行判断,例如:

Select a.*,

Case

When @rownum0=a.c_id then @rownum:=@rownum+1

When @rownum0:=a.c_id then @rownum:=1

Else @rownum

End rank1,

Case

When @rownum1=a.s_score then @rownum2

When @rownum1:=a.s_score then @rownum2:=@rownum

Else @rownum2

End rank2

from (select * from score order by c_id ,s_score desc

) as a,(select @rownum:=0, @rownum0:=0,@rownum1:=0,@rownum2:=0) r;

https://www.cnblogs.com/xuehaiwuya0000/p/11061336.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值