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

如何编写SQL语句获取表中指定Name对应的最新记录

获取指定Name的最新记录行解决方案

这里有几种实用的SQL写法来实现你的需求,你可以根据自己使用的数据库类型选择:

方法1:子查询关联(通用型,兼容大多数数据库)

这种方法通过子查询先找出Tim和Jeff各自的最新时间戳,再关联原表拿到完整记录:

SELECT t.id, t.Name, t.time
FROM your_table t
INNER JOIN (
    -- 先筛选目标Name,拿到每个Name的最大time
    SELECT Name, MAX(time) AS latest_time
    FROM your_table
    WHERE Name IN ('Tim', 'Jeff')
    GROUP BY Name
) sub 
ON t.Name = sub.Name AND t.time = sub.latest_time;

说明:

  • 如果同一个Name存在同一时间戳的多条记录(虽然epoch时间戳重复概率低,但也有可能),这个语句会返回所有符合条件的行。
  • 如果你希望在这种情况下只返回其中一行(比如取最大id的那条),可以把子查询里的MAX(time)改成MAX(id),然后关联条件换成t.id = sub.max_id,同时子查询里要GROUP BY Name取最大id。

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

窗口函数可以更直观地给每组记录排序,直接取最新的那条:

SELECT id, Name, time
FROM (
    SELECT 
        id, Name, time,
        -- 按Name分组,每组内按time降序排,给每行标序号
        ROW_NUMBER() OVER (PARTITION BY Name ORDER BY time DESC) AS rn
    FROM your_table
    WHERE Name IN ('Tim', 'Jeff')
) ranked
WHERE rn = 1;

说明:

  • ROW_NUMBER()会给每组内的记录按time降序分配唯一序号,rn=1就是最新的那条。
  • 如果想保留同一时间戳的所有最新记录,把ROW_NUMBER()换成RANK()或者DENSE_RANK()即可。

注意:记得把代码里的your_table替换成你实际使用的表名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:16:32