mysql如何先排序后分组group by
**前言:**经常遇到需要对数据进行分组并取组内最新一条数据的需求,这边总结了3种方法。需求:查询业务流程明细表中每个业务流程最新明细信息实现:mysql 5.6可以这样:5.7以后对子查询排序做了优化,子查询全表排序失效,网上很多是在排序后面加limit的,这样感觉很不好,数据量大会丢数据,建议可以这样:方式一:方式二:...
·
**前言:**经常遇到需要对数据进行分组并取组内最新一条数据的需求,这边总结了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
更多推荐
已为社区贡献4条内容
所有评论(0)