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的位置不能变,否者就会失效