zoukankan      html  css  js  c++  java
  • work_30_Mysql实现rank()排序功能

     1.MYSQL中如何实现rank排名查询

    实现效果,age相同rank增加和age相同rank相同。

    1.sql语句中,使用@来定义一个变量。如:@abc

    2.sql语句中,使用:=来给变量赋值,:@abc:=123,则变量abc的值为123

    3.sql语句中,if(A,B,C)表示,如果A条件成立,那么执行B,否则执行C,如:
      @abc := if(2>1,100,200)的结果是,abc的值为100。

    4.case...when...then语句
       case...when...then语句有两种情况:
    case情况一(CASE 后面不带表达式):

    CASE WHEN expression THEN 操作1

               WHEN expression THEN 操作2

                .......

               ELSE 操作n

    END

    注:自上而下,凡是走了其中一个when或者是走了else了,其他的都不再走了。

            case情况二(CASE 后面带表达式,此时WHEN 后面的则是该表达式可能的值):

    CASE expression

    WHEN  expression的值1 THEN  操作1

    WHEN  expression的值2 THEN  操作2

         .......

        ELSE 操作n

    END 

    注:自上而下,凡是走了其中一个when或者是走了else了,其他的都不再走了。

    SELECT @curRank := 0:设置变量@curRank的默认值
    SELECT
        id,
        NAME,
        age ,@curRank :=@curRank + 1 AS rank
    FROM
        rank r,
        (SELECT @curRank := 0) c
    ORDER BY
        age DESC ,id 

    定位初始变量@curRank := 0, @prevRank := NULL

    判断排序后的买一条记录是否是@prevRank = age 如果是的话rang=@curRank

    SELECT
        id,
        NAME,
        age,
    
    CASE
    WHEN @prevRank = age THEN @curRank
    WHEN @prevRank := age THEN @curRank :=@curRank + 1
    
    END AS rank
    FROM
        rank r,
        (
            SELECT
                @curRank := 0,
                @prevRank := NULL
        ) c
    ORDER BY
        age DESC,
        id

     

     参考博客《《https://blog.csdn.net/justry_deng/article/details/80597916》》

  • 相关阅读:
    WPF通过不透明蒙板切割显示子控件
    WPF图片,DataGrid等实现圆角
    今天是2015年1月5日
    控制反转&依赖注入
    如何提高sql查询性能到达优化程序的目的
    handle句柄
    winform加快窗体加载速度
    winform窗体自适应大小
    快速整理代码(c#)
    IC卡、ID卡、M1卡、射频卡的区别是什么(射频卡是种通信技术)
  • 原文地址:https://www.cnblogs.com/asndxj/p/13920642.html
Copyright © 2011-2022 走看看