Mysql5.7中的分组排序

Mysql中的分组排序

Mysql8中已经有了和oracle一样的窗口函数,项目中用的5.7

初始数据:

image-20201203201248982

目的,现在只想取user_id最大的一条

select t.*,if(@g=t.user_type,@rank:=@rank+1,@rank:=1) as rank,
@g:=t.user_type as 'group'
from
(SELECT t.user_id,t.fullname,t.user_type 
  FROM t_user t
 order by t.user_type,t.user_id desc)t,
(select @rank:=0,@g:=null) t2
where if(@g=t.user_type,@rank:=@rank+1,@rank:=1) =1

其中的原因就是投影原因,先给t_user表按照2个字段排序,并给2个变量赋值,当第一条数据过来的时候,@g为null,不等于User_type,使用@rank为1,如果下一条数据和user_type一样,则rank+1。

image-20201203201348623

posted @ 2020-12-03 20:15  天宇轩-王  阅读(1859)  评论(0编辑  收藏  举报