MySQL用GROUP BY分组取最新一条数据

因为group by后取的一条数据默认是按主键id排序后的第一条,
而且mysql查询语句是先执行group by再执行order by的。
所以无法直接取 group by 后 创建时间最新的数据。
本来以为这样写可以先按create_time 倒序,再在结果集取创建时间最新的数据,结果失望了

select * from
	(SELECT * FROM equity_order order by create_time desc)a 
group by equity_id;

当然可以在order by 后 加 limit 10解决这个问题,但是limit的取值不好把控

select * from
	(SELECT * FROM equity_order order by create_time desc limit 10)a 
group by equity_id;

不过还有一种方法,先取group by 后记录的最大时间,在进行 in 操作。
当然想取其它自定义结果修改 max(create_time) 即可。

select * from equity_order where create_time in (
	select max(create_time) from equity_order group by equity_id
)

提示:select * 在测试可以这么些,实际代码建议写select 具体字段,因为select * 影响效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值