Mysql分组排序

需求

例如:表customer_tel中一个用户ID(user_id)有多条手机号记录,需要取出每个user_id下最新一条手机记录(以update_time)判断最新,表数据如下

表数据
方法一(mysql实现)
SELECT * FROM `customer_tel` t1
inner join 
(SELECT USER_ID,max(update_time) update_time from customer_tel GROUP BY USER_ID) t2
on t1.USER_ID = t2.USER_ID and t1.update_time = t2.update_time;
结果
image.png
方法二

利用row_number()
over (partition by user_id order by update_time desc)实现,但是mysql版本太低不能实现,hive,Postgre SQL,orecal都可以实现

select * from (select user_id,phone,update_time,row_number() 
 over (partition by user_id order by update_time desc) rank from customer_tel ) t where t.rank = 1

你可能感兴趣的:(Mysql分组排序)