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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM