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

SQL技术需求:从关联表T2更新T1的start_year与end_year为MIN/MAX值

解决方案:关联聚合后的T2数据更新T1年份字段

嘿,这事儿不难,我来给你捋清楚怎么实现这个需求!核心思路是先对T2按make_id分组计算出每个品牌的最早开始年份和最晚结束年份,再把这个聚合结果和T1关联,完成字段更新。

通用SQL写法(适用于MySQL等支持JOIN的UPDATE语法的数据库)

UPDATE T1
JOIN (
    SELECT 
        make_id,
        MIN(start_year) AS min_start,
        MAX(end_year) AS max_end
    FROM T2
    GROUP BY make_id
) AS T2_agg ON T1.make_id = T2_agg.make_id
SET 
    T1.start_year = T2_agg.min_start,
    T1.end_year = T2_agg.max_end;

PostgreSQL专属写法

如果你用的是PostgreSQL,语法会稍有不同,需要用FROM子句关联聚合结果:

UPDATE T1
SET 
    start_year = T2_agg.min_start,
    end_year = T2_agg.max_end
FROM (
    SELECT 
        make_id,
        MIN(start_year) AS min_start,
        MAX(end_year) AS max_end
    FROM T2
    GROUP BY make_id
) AS T2_agg
WHERE T1.make_id = T2_agg.make_id;

语句说明

  1. 子查询T2_agg:对T2按make_id分组,用MIN()和MAX()函数分别计算每个品牌的最小start_year和最大end_year
  2. 关联匹配:通过make_id将T1和聚合后的T2结果关联,确保只更新匹配的记录
  3. 更新字段:用SET子句把T1的对应字段替换成聚合得到的最值

按照这个语句执行后,就能得到你预期的结果:

  • 1 Abarth 2014 NULL
  • 2 AC 1990 2001
  • 3 Acura 1996 NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:17:55