首页 > 数据库 >MySQL 低版本 解决row_number()over()无法使用的方法

MySQL 低版本 解决row_number()over()无法使用的方法

时间:2023-10-10 14:47:17浏览次数:44  
标签:name union 低版本 over number rank score class select

MySQL8以上版本支持了很多的窗口函数,但是低版本的可能也需要用到row_number()over()

select    a.u_name,
        a.class,
        a.score,
        if((@class = null) or (@class = a.class),@rownum := @rownum + 1,@rownum := 1) rn, #没有并列情况
        if((@class = null and @score = null) or (@class = a.class and @score != a.score),@rank := @rank + 1,@rank := 1) rank, #有并列情况
        @class := a.class,
        @u_name := a.u_name,
        @score := a.score
from (
select '张三' as u_name,59 as score,'一班' as class
union all 
select '李四' as u_name,15 as score,'一班' as class
union all 
select '王二' as u_name,88 as score,'一班' as class
union all 
select '王三' as u_name,88 as score,'一班' as class
union all 
select '刘六' as u_name,35 as score,'二班' as class
union all 
select '赵六' as u_name,100 as score,'二班' as class
union all 
select '王五' as u_name,48 as score,'二班' as class) a,
(select @rownum := 0,@rank := 0,@class := null,@score := null) b
order by a.class,a.score desc

 

查询结果

 

 

标签:name,union,低版本,over,number,rank,score,class,select
From: https://www.cnblogs.com/karrya/p/17754610.html

相关文章

  • Java @Override 注解
    在代码中,你可能会看到大量的 @Override这个注解简单来说就是让编译器去读的,能够避免你在写代码的时候犯一些低级的拼写错误。Java @Override@Override用途@Override因为重写(Override)的特性是,参数和返回以及方法名都不能变。如果在写代码的时候,因为方法名不小心敲错了,在没有 @Ov......
  • Java @Override 注解
    在代码中,你可能会看到大量的 @Override 注解。这个注解简单来说就是让编译器去读的,能够避免你在写代码的时候犯一些低级的拼写错误。Java @Override 注解用来指定方法重写(Override),只能修饰方法并且只能用于方法重写,不能修饰其它的元素。@Override 注解可以强制一个子类必......
  • 【Https异常】This request has been blocked; the content must be served over HTTP
    参考:https://www.cnblogs.com/756623607-zhang/p/11790283.html一、问题出现场景项目从http升级到https后,jsp页面存在发送http请求的情况下就会出现该异常。因为HTTPS是HTTPoverSecureSocketLayer,以安全为目标的HTTP通道,所以在HTTPS承载的页面上不允许出现http请求......
  • 如何下载低版本的maven
    原文链接:https://www.longkui.site/program/java/maven525/4661/重新配置maven,需要下载maven,但是官网默认下载的是最新版,最新版不一定适合你,所以,我们一般会下载一些旧版的maven包,这篇文章简单介绍一下如何下载旧版本的maven。我们打开maven官网:Maven–WelcometoApacheMave......
  • chrome调试工具之[hover悬浮样式]
    前言在调节带有hover样式的元素时,当鼠标移动到上面的时候才会显示相应的元素,鼠标移开时元素就会消失,所以导致无法调节样式问题,第一种方式方便定位元素位置,第二种方式可以解决问题(可以直接看第二种方法!!!)一、快捷定位元素位置的方法使用网上的方法,首先F12打开调试工具,找到加了h......
  • mybatis出现错误 java lang NumberFormatException:For input string:A1
    使用mybatis,当使用map传参并且在iftest判断时使用map中所传的参数时,可能会产生如题的报错,具体报错信息见下图:分析这个错误,自己调试也找过度娘,“坚信”自己代码并没问题,但是问题始终无法解决。最后在一个帖子看到说iftest判断时,传入的参数跟匹配的值类型必须一致,于是调整了自己代......
  • Travelling Salesman and Special Numbers
    prologue模拟赛的一道题,结果没做出来,丢大人,败大兴。所以过来糊一篇题解。analysis我们看到数据范围这么大,那么肯定不可以一个一个遍历(废话),所以就要考虑这个题目的性质。我们先假设,极端数据\(2^{1000}-1\),这个数字中包含了\(999\)个1(正好感冒了能不能让我喝了)。下一次......
  • display:none和overflow:hidden的区别
    1、display:none当将一个元素的display属性设置为none时,该元素将不会显示在网页中,并且不会占据任何空间。也就是说,该元素会完全隐藏,其他的元素会立即占据它原来的位置。该属性适用于需要完全隐藏某个元素的场景。//html代码:完全隐藏子元素<divclass="father"><di......
  • xpath 处理自增的id manage11 使用表达式 //*[starts-with(@id, "manage") and
      //*[starts-with(@id,"manage")andnumber(substring-after(@id,"manage"))=11] 1.使用starts-with()函数选择以"manage"开头的所有元素,2.使用substring-after()函数获取ID中"manage"后面的部分。3.使用number()函数将这部分转换为数字,4.使用逻辑运算符and来判断......
  • Powerful Number 筛
    PowerfulNumber筛(PN筛)可以解决一些求积性函数前缀和的问题。要求能构造出一个积性函数\(g\),满足:\(g\)容易求前缀和;对于质数\(p\),\(f(p)=g(p)\)。称一个数\(x\)是PowerfulNumber(PN)当且仅当\(x\)的质因数分解中,所有质因数的指数都\(\ge2\)。\(1\)是PN。有结......