zoukankan      html  css  js  c++  java
  • mysql 分组加行号

    SELECT
                        case when @v <> _apply.PATIENT_ID then @r :=1 else @r :=@r + 1 end AS row_num_v_,
                        case when @v <> _apply.PATIENT_ID then @v := _apply.PATIENT_ID else @v end AS row_num_v,
                        _apply.ID,
                        _apply.MEDICAL_CARD_NO,
                        _apply.EXPERT_RESOURCE_ID,
                        _apply.PATIENT_ID,
                        _apply.DEPT_ID,
                        _apply.REG_DATE,
                        _apply.COMPANY_ID
                    FROM
                        reg_apply _apply,
                        (SELECT @r := 0) b,
                        (SELECT @v := -1) bv
                    ORDER BY
                        _apply.PATIENT_ID,
                        _apply.REG_DATE DESC

    mysql中没有row_number() over,可以使用曲线救国的方法来解决。

    1、我们先按要分组的字段排序。

    2、我们定义两个变量一个@r作为行号,@v作为分组号。然后业务表链接这两个字段。

    3、case 分组号和当前的要分组的字段比较。

    4、上面的两个case的位置不能变,否者就会失效

  • 相关阅读:
    9.19题解
    9.18题解
    改码风
    找到了几个好的网站
    题目链接
    二分上机训练题解
    二分例题简单说明
    贪心上机训练题解
    贪心算法例题简单说明
    Johnson法则证明
  • 原文地址:https://www.cnblogs.com/kongxianghao/p/7371674.html
Copyright © 2011-2022 走看看