今天群里有個小伙伴提了個需求說幫寫一條取出分組后最新的一條數(shù)據(jù)的sql:
一開始我直接就上sql:
select * from (select * from a order by a.id desc) t group by id
結(jié)果找到的數(shù)據(jù)老不對,后面查閱資源發(fā)現(xiàn),在mysql5.7后 優(yōu)化器默認(rèn)過濾了子查詢的order by 效果,
所以找到的數(shù)據(jù)不對勁,但是sql變成:
select * from (select * from a order by a.id desc limit 9999) t group by id
卻又可以了。
后來只能用另外一種方法解決了,子查詢加inner join 示例:
select * from product INNER JOIN
(select max(id) max_id from product group by price) as t
on t.max_id = product.id order by id desc
最后問題解決~~