赞
踩
因为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 * 影响效率
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。