• 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_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;

  • 相关阅读:
    vsftpd安装问题汇总(持续更新。。)
    Office2010安装问题总结
    AM335X 开发板安装vsftpd操作流程
    Source Insight常用快捷键及注释快捷键设置
    小四轴之第二次飞行篇
    linux命令df中df -h和df -i
    Linux tail 命令
    Linux chmod命令用法
    ps -ef |grep java
    jupyter notebook安装、登录
  • 原文地址:https://www.cnblogs.com/xuehaiwuya0000/p/11061336.html
Copyright © 2020-2023  润新知