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 * 影响效率


版权声明:本文为qq_36911595原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。