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

SQL中如何实现逐行迭代并查询关联的最小creation_date?

实现SQL中查询当前行关联记录的最小创建日期

针对你的需求,不需要用迭代逻辑,通过自连接或者关联子查询就能直接实现,下面是两种通用的解决方案,适用于MySQL、PostgreSQL、SQL Server等主流数据库:

方案一:关联子查询

直接在SELECT语句中嵌入子查询,针对每一行的id,查询表中所有latest_id等于该id的记录的最小creation_date:

SELECT
    id,
    creation_date,
    -- 子查询获取匹配当前id的记录的最小创建日期
    (SELECT MIN(creation_date)
     FROM your_table t2
     WHERE t2.latest_id = t1.id) AS min_child_creation_date
FROM your_table t1;

说明

  • t1是主查询的表别名,t2是子查询的别名,通过t2.latest_id = t1.id关联当前行与子记录
  • 如果当前行没有对应的子记录(即没有latest_id等于它的id的条目),min_child_creation_date会返回NULL

方案二:自连接+分组聚合

通过左连接关联表自身,再分组聚合计算最小日期,这种方式在数据量较大时性能可能更优:

SELECT
    t1.id,
    t1.creation_date,
    MIN(t2.creation_date) AS min_child_creation_date
FROM your_table t1
-- 左连接保留所有主表记录,即使没有子记录
LEFT JOIN your_table t2 ON t2.latest_id = t1.id
GROUP BY t1.id, t1.creation_date;

说明

  • 左连接确保主表的每一行都会被返回,不管有没有对应的子记录
  • 按主表的id和creation_date分组后,用MIN()聚合函数计算子记录的最小创建日期

优化建议

如果表的数据量较大,建议给latest_id字段创建索引,这样关联查询时能快速定位匹配的记录,避免全表扫描:

CREATE INDEX idx_latest_id ON your_table(latest_id);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:15:31