mysql group by 取指定行的数据?
阿神
阿神 2017-04-17 13:47:46
[MySQL讨论组]

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 )
阿神
阿神

闭关修行中......

全部回复(2)
阿神
# 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

PHP中文网

建议在已有的sql中将in改用inner join做关联,同时给group by出来的临时表添加索引。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号