欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql查询表中最新版本的多条数据

程序员文章站 2022-05-29 21:31:23
...
  • 需求:历史数据和新增数据都存放再同一张表中,需要查询表中最新版本的多条数据,根据创建时间区分
    首先想到的是先按照时间倒序排序,再分组,发现没有得到想要的结果。
    SELECT s1.* FROM 
    (SELECT * FROM tb_t1 ORDER BY update_time DESC) s1 
    GROUP BY s1.name
    
    造成如上的原因是5.7以上版本会把子查询的order by语句优化掉,order by无法生效
  • 网上找到另一种方法测试可以实现,使用自连接,先分组查出一组数据中最大(最新)的时间,再自连接查出整条数据
SELECT  t1.*
FROM tb_t1 t1 
JOIN 
(SELECT t2.`name`,MAX(t2.`update_time`) update_time FROM tb_t1 t2 GROUP BY t2.`name`) s1
ON  t1.`is_del`=0
AND t1.`update_time`=s1.update_time 
AND t1.`name`=s1.name 
相关标签: mysql笔记