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

如何关联多表并保留New_item全量数据?LEFT JOIN失效排查

问题解决:LEFT JOIN后New_item表新条目未显示的修复

问题出在你的WHERE子句里的Color.MPG = Price.MPG条件——虽然用了LEFT JOIN,但这个条件会过滤掉Color或Price表没有匹配记录的New_item条目。因为LEFT JOIN后,无匹配的Color.MPG或Price.MPG会是NULL,NULL和任何值比较的结果都是不成立,导致这些新条目被排除。

正确的做法是把Color.MPG = Price.MPG这个跨表关联条件移到对应的JOIN ON子句中,同时保留New_item.Entry_Date的过滤条件(这个条件只针对主表New_item,不会过滤掉需要的记录)。

修改后的SQL语句如下:

SELECT
    New_item.Artikol_tkt
    , New_item.Shade
    , Artikol.Description
    , Color.MPG
    , Artikol.Supplier
    , Artikol.BUoM
    , Artikol.Net_weight
    , Price.Purchase_Price
    , Supplier.Freight
    , New_item.Entry_Date
FROM 
    (((New_item LEFT JOIN Artikol ON New_item.Artikol_tkt = Artikol.Artikol_tkt)
    LEFT JOIN Supplier ON Artikol.Supplier = Supplier.Supplier)
    LEFT JOIN Price ON New_item.Artikol_tkt = Price.Artikol_tkt)
    LEFT JOIN Color ON New_item.Shade = Color.Shade AND Color.MPG = Price.MPG
WHERE New_item.Entry_Date = CDate('25/10/2022');

如果Price表也可能没有匹配记录,为了避免Price.MPG为NULL导致Color的JOIN条件不生效,可以用COALESCE函数处理NULL值(比如COALESCE(Color.MPG, '') = COALESCE(Price.MPG, '')),但上面的修改已经能解决新条目不显示的核心问题——确保主表New_item的所有符合Entry_Date条件的记录都被保留,不管其他表是否有匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:50:26