首页 > 开发 > MySQL > 正文

mysql group by 取指定行的数据?

2017-09-08 09:04:15  来源:网友分享

group by 后取的数据默认好像是第一条。现在我想取分组后,最后写入的一条数据。请教下这个用group by 能做到吗?不能的话,有什么其他的方案实现,前提要确保性能(至少在几十万的数据量下,不要太慢)?有经验的朋友来分享下哈。先表示感谢!

如下的方案,性能偏低:

select content,ac,id,aId from c_log where id in (select max(id) from c_log where ac in(1,3,5) group by aId )

解决方案

# aId 相同的的id最大的记录SELECT c1.*FROM c_log c1 LEFT JOIN c_log c2 ON (c1.aId = c2.aId AND c1.id < c2.id)WHERE c2.id IS NULL;

这个性能要比group by 好的多。而且满足要求。
具体性能分析,可以参考
http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group