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 协议》,转载必须注明作者和本文链接
连什么表, 查2次不香么
explain 依次看, 谁的时间短, 谁查的条数少
@abcDev 主要是两个表都有搜索过滤条件,而且要进行分页,分两次查不好过滤分页
擦,现在才发现方案二是有行不通的,只是把最大的时间取出来,其他数据还是默认第一个的