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

使用GROUP BY按最大日期分组后获取每组对应记录text字段的实现方法

按人员分组取最大日期对应整行记录的实现方法

你之前仅用GROUP BY取MAX(Date)无法拿到对应Text的核心原因是:SQL标准中GROUP BY的查询结果仅允许返回分组字段、聚合函数字段,未做聚合处理的非分组字段无法直接返回,因此无法直接绑定最大日期对应的Text值。

你可以用以下两种通用方案实现需求:

方案1:窗口函数法(适用于MySQL 8.0+、PostgreSQL、SQL Server等所有支持窗口函数的新版数据库)

SELECT Initials, Date, Text
FROM (
    SELECT 
        Initials,
        Date,
        Text,
        -- 按人员分组,组内按日期倒序排序,排名1即为最大日期的行
        ROW_NUMBER() OVER (PARTITION BY Initials ORDER BY Date DESC) AS rank_num
    FROM 你的实际表名
) temp_table
WHERE rank_num = 1;

说明:如果存在同一个人员同一天有多条记录的场景,需要把所有符合条件的行都返回时,将ROW_NUMBER()替换为RANK()即可。

方案2:关联子查询法(兼容所有旧版本数据库,例如MySQL 5.x)

SELECT t1.Initials, t1.Date, t1.Text
FROM 你的实际表名 t1
INNER JOIN (
    -- 先查询出每个人员对应的最大日期
    SELECT Initials, MAX(Date) AS max_date
    FROM 你的实际表名
    GROUP BY Initials
) t2 
ON t1.Initials = t2.Initials AND t1.Date = t2.max_date;

注意事项

  • 请提前确认Date字段为日期类型,若为字符串格式存储需要先转为日期类型再做计算,避免出现字符串排序逻辑错误(例如字符串规则下1/10/2022会小于1/2/2022)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:39:01