取出分组后最新的一条数据的坑

今天群里有个小伙伴提了个需求说帮写一条取出分组后最新的一条数据的sql:

        一开始我直接就上sql:
      select * from (select * from a order by a.id desc) t group by id 
      结果找到的数据老不对,后面查阅资源发现,在mysql5.7后 优化器默认过滤了子查询的order by 效果,
      所以找到的数据不对劲,但是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 
  
  最后问题解决~~
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容