MySQL 关联表取最新一条记录方案
- 初始方案一,先排序再分组 这是网上找的解决方案,先排序好,再进行分组,但是结果却不可行。经实践测试发现,子查询是排序了,但是进行 inner join 再 group by,handle_time 还是取的分组里的最小值。
select id,name,handle_time from A inner join (select id,handle_time from B order by handle_time desc) tmp on A.id=tmp.id group by id
- 方案二,取最大时间值进行分组 测试证明这个方案是可行的,通过网上找资料发现 mysql5.7 之前方案一是可行的,到 mysql5.7 后只能使用方案二了。
select id,name,handle_time from A inner join (select id,max(handle_time) as handle_time from B group by id) tmp on A.id=tmp.id order by handle_time desc
试问有更好的方案吗?
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: