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

多实例重复ID的SQL表关联:获取最新日期与最低成本

嘿,刚接触子查询和表关联遇到这种问题很正常,我来给你捋清楚怎么写这条SQL!

首先得明确:两张表肯定得有一个共同的关联字段(比如商品ID、业务ID这类,我下面假设是business_id,你记得换成你实际用的字段名),不然没法把日期和成本对应起来。

你的需求是从重复的归档数据里,拿到每条业务数据的最新日期(来自tableA)和对应最低成本,这里分两种常见情况,我都给你写出来:


情况1:每个业务数据的最新日期 + 该业务的最低成本(不限日期)

这种是不管成本的记录日期,只要是该业务的最低成本,搭配它的最新日期:

SELECT 
    a.business_id,
    a.latest_date,
    b.min_cost
FROM (
    -- 先从tableA分组,拿到每个业务的最新日期
    SELECT business_id, MAX(date_column) AS latest_date
    FROM tableA
    GROUP BY business_id
) a
-- 关联tableB分组后的最低成本数据
JOIN (
    SELECT business_id, MIN(cost_column) AS min_cost
    FROM tableB
    GROUP BY business_id
) b ON a.business_id = b.business_id;

情况2:每个业务数据的最新日期 + 该日期下的最低成本

如果是要最新日期当天对应的成本记录里的最低值,就用这个:

SELECT 
    a.business_id,
    a.latest_date,
    MIN(b.cost_column) AS lowest_cost_on_latest_date
FROM (
    -- 先拿每个业务的最新日期
    SELECT business_id, MAX(date_column) AS latest_date
    FROM tableA
    GROUP BY business_id
) a
-- 关联tableB中同业务且日期等于最新日期的记录
JOIN tableB b 
    ON a.business_id = b.business_id 
    AND b.date_column = a.latest_date
GROUP BY a.business_id, a.latest_date;

你之前查询返回0条结果,大概率是这几个原因:

  • 关联字段选错了(比如用了表的自增ID而不是共同的业务键)
  • 两张表的关联字段没有匹配的数据(比如tableA有的业务ID在tableB里找不到)
  • 字段名写错了(比如把date写成dates,或者成本字段名拼错)

记得把SQL里的business_id、date_column、cost_column都换成你实际的表字段名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:17:44