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

多表日期关联的Left Outer Join实现:同日期数据合并至单行

多表日期合并关联的实现方案

要实现你需要的结果,核心是先收集所有涉及的日期与ID的唯一组合,再以此为基础关联主表和各子表,具体SQL写法如下:

核心思路

  1. 用UNION合并B、C、D表中的ID_A和date,去重得到所有需要展示的日期-ID组合;
  2. 将这个组合集合与主表A关联,确保主表信息能对应到每一行;
  3. 分别左连接B、C、D表,通过ID_A和date双字段关联,拉取对应日期的各子表数据,无数据的字段会显示为空(NULL)。

SQL示例代码

SELECT
    a.ID_A AS ID,
    a.infoA AS infoA,
    dates.date,
    b.infoB,
    c.infoC,
    d.infoD
FROM
    -- 收集所有唯一的ID-日期组合
    (SELECT ID_A, date FROM B
     UNION
     SELECT ID_A, date FROM C
     UNION
     SELECT ID_A, date FROM D) AS dates
-- 关联主表A
LEFT JOIN A a ON dates.ID_A = a.ID_A
-- 分别左连各子表
LEFT JOIN B b ON dates.ID_A = b.ID_A AND dates.date = b.date
LEFT JOIN C c ON dates.ID_A = c.ID_A AND dates.date = c.date
LEFT JOIN D d ON dates.ID_A = d.ID_A AND dates.date = d.date
-- 按日期排序(可选,让结果更规整)
ORDER BY dates.date;

代码说明

  • UNION会自动去重,避免同一日期-ID组合重复出现;
  • 所有关联都用LEFT JOIN,确保即使某子表没有对应日期的数据,该行仍会保留,对应字段显示为空;
  • 关联条件同时使用ID_A和date,保证是同一ID下的同一日期数据匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:06:04