mysql如何先排序后分组group by

**前言:**经常遇到需要对数据进行分组并取组内最新一条数据的需求,这边总结了3种方法。
需求:
查询业务流程明细表中每个业务流程最新明细信息
实现:
mysql 5.6可以这样:

select t.* from (
select * from biz_flow_task order by update_time desc 
) t group by t.flow_uid

5.7以后对子查询排序做了优化,子查询全表排序失效,网上很多是在排序后面加limit的,这样感觉很不好,数据量大会丢数据,建议可以这样:
方式一:

select t.* from (
select * from biz_flow_task having 1 order by update_time desc 
) t group by t.flow_uid

方式二:

select t.* from biz_flow_task t
join (
select flow_uid,max(update_time) as update_time from biz_flow_task group by flow_uid,update_time 
) tt on t.flow_uid = tt.flow_uid and t.update_time = tt.update_time
group by tt.flow_uid
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值