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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容