Mysql中的分組排序
Mysql8中已經有了和oracle一樣的窗口函數,項目中用的5.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。

