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

如何获取数据表中各identifier对应的最新记录?

获取每个identifier的最新条目(以ID为判断依据)

嘿,你选ID作为判断依据真的很明智——毕竟一般来说ID都是自增主键,相比created_at能更精准地判定最新条目(完全避免同一时间戳下多条数据的歧义问题)。下面给你两种实用的实现方案,适配不同的数据库环境:

方案一:子查询关联(通用型,适配绝大多数数据库)

这种方法先通过分组找出每个identifier对应的最大ID(也就是该分组下的最新条目ID),再和原表关联获取完整数据:

SELECT t.*
FROM your_table t
INNER JOIN (
    SELECT identifier, MAX(ID) AS max_id
    FROM your_table
    GROUP BY identifier
) tm ON t.ID = tm.max_id

方案二:窗口函数(适合支持窗口函数的数据库,如MySQL 8.0+、PostgreSQL、SQL Server等)

利用窗口函数按identifier分组,每组内按ID降序排序,取排序后第一条数据即可:

SELECT ID, identifier, data, created_at
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY identifier ORDER BY ID DESC) AS rn
    FROM your_table
) t
WHERE rn = 1;

小贴士:如果你的业务场景中存在同一identifier下ID相同的极端情况(不过主键ID一般不会重复),可以根据实际需求替换ROW_NUMBER()为RANK()或DENSE_RANK(),但通常前者就足够用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:51:53