mysql|mysql 中关于获取行号@rownum(=@rownum+1)
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_idthen@rownum:=@rownum+1
When @rownum0:=a.c_idthen@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 scoreorder by c_id ,s_score desc
) as a,(select @rownum:=0, @rownum0:=0,@rownum1:=0,@rownum2:=0) r;
【mysql|mysql 中关于获取行号@rownum(=@rownum+1)】转载于:https://www.cnblogs.com/xuehaiwuya0000/p/11061336.html
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理