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

通过匹配ID从另一表添加Supplier列失败,求SQL修正方案

修正后的SQL代码及问题说明

原代码的问题

  • LEFT JOIN 的 ON 子句不完整:只写了 a.ID,没有关联 output_table 的 ID 字段,数据库无法确定匹配规则。
  • WHERE 子句中 a.period = 2022 会破坏左连接逻辑:左连接原本会保留 output_table 的所有行,即使 main_table 中没有匹配项,但这个条件会过滤掉所有 main_table 中无匹配(a.period 为NULL)的行,等同于变成内连接。
  • 未指定 value、product、name 的表来源:如果两张表存在同名字段,会引发歧义错误,即使没有同名字段,也不符合SQL编写规范。

修正后的代码

select 
    o.ID,
    o.value,
    o.product,
    o.name,
    a.supplier
from 
    output_table o  -- 给主表起别名o,方便引用
left join 
    main_table a 
    on a.ID = o.ID  -- 完整指定ID匹配规则
    and a.period = 2022  -- 将period条件移到ON子句,保留左连接逻辑
order by 
    o.product

关键修改说明

  1. 给 output_table 添加别名 o,明确字段来源,避免歧义。
  2. 补全 LEFT JOIN 的 ON 子句,指定 a.ID = o.ID 作为匹配依据。
  3. 将 a.period = 2022 从 WHERE 移到 ON 子句:这样只会在匹配 main_table 时筛选2022年的数据,同时保留 output_table 中所有未匹配的行(这些行的supplier会显示为NULL)。如果你的需求是只保留output_table中匹配到main_table2022年数据的行,可以把条件放回WHERE,但此时左连接失去意义,换成INNER JOIN更合适。

内容的提问来源于stack exchange,提问作者mandu J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:30:03