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

SQL技术问询:如何获取各ID最小日期对应的value列值?

解决方法:获取每个ID最小日期对应的Value值

这是个非常常见的SQL查询需求,我给你两种实用的实现方案,适配不同的数据库环境:

方法一:窗口函数法(推荐,简洁高效)

这种方法适用于支持窗口函数的数据库(比如MySQL 8.0+、PostgreSQL、SQL Server、Oracle等),代码简洁且性能优异:

SELECT id, date, value
FROM (
    SELECT 
        id, 
        date, 
        value,
        -- 按ID分组,每组内按日期升序排序,标记行号
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY date ASC) AS row_num
    FROM your_table_name
) ranked_data
WHERE row_num = 1;

说明:

  • PARTITION BY id 表示按ID分组处理每个ID的记录
  • ORDER BY date ASC 确保每组内最早的日期排在最前面
  • 如果某个ID存在多条相同最小日期的记录,ROW_NUMBER() 会随机保留一条;若想保留所有符合条件的记录,可以把ROW_NUMBER()替换为RANK()。

方法二:子查询关联法(兼容旧版数据库)

如果你的数据库不支持窗口函数(比如MySQL 5.x及以下),可以用子查询+关联的方式实现:

SELECT main.id, main.date, main.value
FROM your_table_name main
INNER JOIN (
    -- 先获取每个ID的最小日期
    SELECT id, MIN(date) AS earliest_date
    FROM your_table_name
    GROUP BY id
) min_dates 
    ON main.id = min_dates.id 
    AND main.date = min_dates.earliest_date;

说明:

  • 子查询先统计出每个ID对应的最小日期
  • 通过INNER JOIN将原表和子查询结果关联,匹配ID和日期,从而拿到对应的Value值
  • 若某个ID有多个相同最小日期的记录,这个方法会返回所有符合条件的行;如果只需要一条,可以添加DISTINCT关键字(根据实际需求调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:42:37