当前位置:   article > 正文

MySQL用GROUP BY分组取最新一条数据_mysql group by 取创建时间最新的一条

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;
  • 1
  • 2
  • 3

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

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

不过还有一种方法,先取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
)
  • 1
  • 2
  • 3

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/952713
推荐阅读
相关标签
  

闽ICP备14008679号