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

如何获取组合主键数据表中每个用户的最新value1、value2记录?

获取每个用户的最新value1和value2值

数据表结构:
PK1 | PK2 | User(非唯一)| value 1 | value 2| timestamp(记录添加时间)
注:PK1与PK2组合为唯一主键,单独不唯一。

方法一:使用窗口函数(推荐)

利用ROW_NUMBER()窗口函数按用户分组,再按时间戳倒序排序,筛选出每组的第一条记录即可得到该用户的最新数据:

SELECT User, `value 1`, `value 2`, timestamp
FROM (
    SELECT 
        User, 
        `value 1`, 
        `value 2`, 
        timestamp,
        ROW_NUMBER() OVER(PARTITION BY User ORDER BY timestamp DESC) AS rn
    FROM your_table_name
) t
WHERE rn = 1;

方法二:使用子查询关联

先通过子查询获取每个用户的最新时间戳,再将原表与子查询结果关联,匹配出对应的数据:

SELECT t1.User, t1.`value 1`, t1.`value 2`, t1.timestamp
FROM your_table_name t1
INNER JOIN (
    SELECT User, MAX(timestamp) AS latest_ts
    FROM your_table_name
    GROUP BY User
) t2 ON t1.User = t2.User AND t1.timestamp = t2.latest_ts;

注意事项

  • 替换your_table_name为你的实际表名
  • 若同一用户存在多条时间戳相同的最新记录:方法一会返回其中一条;方法二则会返回所有符合条件的记录,可根据业务需求选择合适的方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:10:36