Mysql根据时间字段取每组数据最新的一条数据

该博客介绍了一种SQL查询方法,用于在具有a、b、time等字段的表中,根据a和b字段进行分组,并按照time字段的降序获取每组的第一条数据。查询通过先用max函数找出每个分组的最大time,然后与原表联接以获取完整的记录。这种方法适用于数据筛选和分析场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

比如一个表有a,b,time,d,e五个字段,根据a,b字段分组,time字段倒序,然后取排序后每组数据第一条数据的de俩字段
在这里插入图片描述
在这里插入图片描述

解决方案:

SELECT
        t2.*
FROM
       (
        SELECT
                a,
                b,
                max(time) time
        FROM
                test_table
        GROUP BY
                a,
                b
        ORDER BY
                time
) t1
JOIN 
test_table t2
 ON t1.a = t2.a
AND t1.b = t2.b
AND t1.time = t2.time;

整体的步骤:

  1. 先把group by 的那些字段,加上一个max(时间)查出来,这些可以确定唯一的一条数据,把这个结果作为t1表。
  2. 然后再跟原表关联,把这些数据相关的所有字段查出来。

max函数说明:后边使用聚合函数时,max会取其中的最大值填充上去。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老司机张师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值