mysql先排序后分组_通用MySQL – 先排序后分组

Last updated on 2019年9月6日

MySQL 一条命令搞定 单表排序后再分组的操作的方法。

需求

按文章分组取评论表最新评论

comments 表数据如下:

idarticle_idcommentcreate_time145hello2018-06-05 00:12:00

245hello22018-06-05 02:12:02

3201foo2018-06-05 10:12:03

4201foo22018-06-05 12:12:12

预期结果:

idarticle_idcommentcreate_time4201foo22018-06-05 12:12:12

245hello22018-06-05 02:12:02

结论代码:(create_time可为其他排序字段)

一、mysql 5.6可以使用

select * from ( select * from comments order by create_time desc ) tmp group by article_id;

二、MySQL 5.7 需要加 limit 来使用,否则会被优化掉

select * from ( select * from comments order by create_time desc limit 999999999 ) tmp group by article_id;

limit 使用了9个9,虽然有点不美观,但是是最简洁的写法;

参考文章地址:https://bbs.csdn.net/topics/391998346#post-401456065 (6楼正解)

三、推荐:子查询使用 max 函数,可通过其他方式转化为可适用 max 函数的数值变通解决

select * from comments a where create_time = (select max(create_time) from comments b where a.article_id = b.article_id) order by create_time desc;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值