Mysql中的分组排序

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

初始数据:

Mysql5.7中的分组排序

目的,现在只想取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。

Mysql5.7中的分组排序

相关文章:

  • 2021-12-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-29
  • 2022-12-23
  • 2021-08-04
猜你喜欢
  • 2022-12-23
  • 2021-08-03
  • 2021-10-21
  • 2022-12-23
  • 2021-04-04
  • 2021-08-06
  • 2021-06-16
相关资源
相似解决方案