You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按每个name对应的最大datetime值查询获取对应value等记录

需求实现方案

以下实现默认你的数据表名为fruit_data,可根据实际表名替换。

方案1:窗口函数实现(推荐,适配MySQL8+、PostgreSQL、SQL Server等所有现代数据库)

SELECT name, value, datetime
FROM (
    SELECT 
        name,
        value,
        datetime,
        ROW_NUMBER() OVER (PARTITION BY name ORDER BY datetime DESC) AS rn
    FROM fruit_data
) t
WHERE rn = 1;

逻辑说明:通过PARTITION BY name按名称分组,每组内按datetime倒序排列后编号,每组编号为1的就是最大时间对应的记录,过滤后即可得到目标结果。

注意:如果同一个name存在多条完全相同的最大datetime记录,使用ROW_NUMBER()只会随机返回其中一条,如需返回所有符合条件的记录,可将ROW_NUMBER()替换为RANK()。

方案2:关联子查询实现(兼容低版本数据库,如MySQL5.x)

SELECT t1.name, t1.value, t1.datetime
FROM fruit_data t1
WHERE t1.datetime = (
    SELECT MAX(datetime)
    FROM fruit_data t2
    WHERE t2.name = t1.name
);

逻辑说明:子查询先查询每个name对应的最大datetime,外层查询匹配同name且时间等于最大时间的记录即可。

方案3:分组关联实现

SELECT t1.name, t1.value, t1.datetime
FROM fruit_data t1
INNER JOIN (
    SELECT name, MAX(datetime) AS max_dt
    FROM fruit_data
    GROUP BY name
) t2 ON t1.name = t2.name AND t1.datetime = t2.max_dt;

内容的提问来源于stack exchange,提问作者Aleksandr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:06:02