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

如何使用SQL获取每个_id对应最新updatedAtDate的数据集?

获取每个_id对应最新updatedAtDate的所有记录

原始数据表

_idupdatedAtDate
ab2023-02-25 02:43:49
ab2023-02-25 02:43:49
ac2023-06-25 02:43:49
ab2023-02-22 03:43:49
ac2023-06-25 02:43:49
ac2023-12-25 02:43:49

预期结果

_idupdatedAtDate
ab2023-02-25 02:43:49
ab2023-02-25 02:43:49
ac2023-06-25 02:43:49
ac2023-06-25 02:43:49

方法1:子查询匹配最大日期(兼容所有主流SQL数据库)

通过子查询先按_id分组找出每个分组的最新日期,再关联原表筛选出对应记录:

SELECT t1._id, t1.updatedAtDate
FROM your_table t1
INNER JOIN (
    SELECT _id, MAX(updatedAtDate) AS max_date
    FROM your_table
    GROUP BY _id
) t2 ON t1._id = t2._id AND t1.updatedAtDate = t2.max_date;

方法2:窗口函数(适用于支持窗口函数的数据库,如MySQL 8.0+、PostgreSQL、SQL Server等)

用RANK()窗口函数给每个_id分组内的记录按日期倒序排名,筛选排名为1的记录(保留所有同日期的最新记录):

SELECT _id, updatedAtDate
FROM (
    SELECT 
        _id, 
        updatedAtDate,
        RANK() OVER (PARTITION BY _id ORDER BY updatedAtDate DESC) AS rnk
    FROM your_table
) sub
WHERE rnk = 1;

注意:这里使用RANK()而非ROW_NUMBER(),是因为当同一_id存在多条相同最新日期的记录时,RANK()会保留所有这些记录,符合需求;若用ROW_NUMBER()会给每条记录分配唯一序号,可能只返回一条,不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:40