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

3表JOIN查询求助:需展示指定字段含NULL值的全量结果

解决方案

首先纠正一个概念:没有LEFT INNER JOIN这种写法,你应该是混淆了左外连接(LEFT JOIN)和内连接(INNER JOIN)。内连接只会返回多表间匹配的行,这就是你只能拿到table3数据的原因——只有存在table3关联记录的table2数据才会被返回。

根据你的需求,要保留table2的所有数据,同时关联table3和table1的匹配数据(不匹配的字段用NULL填充),正确的SQL写法如下:

SELECT
    t2.id AS item_id,
    t2.item_name,
    t3.stat,
    t3.shipped,
    t1.id AS user_id
FROM table2 t2
LEFT JOIN table3 t3 ON t2.id = t3.item_id
LEFT JOIN table1 t1 ON t3.user_id = t1.id;

逻辑说明:

  • 以table2作为主表(左表),用LEFT JOIN关联table3:这样会返回table2的所有行,不管是否存在对应的table3记录;如果没有匹配的table3数据,stat和shipped字段会显示为NULL。
  • 再用LEFT JOIN关联table1:因为table3可能没有记录,所以这里必须继续用左连接,否则会过滤掉没有table3关联的table2数据;即使有外键约束保证数据合法性,这种写法也能兼容特殊场景下的空值展示。

注意点:

  • table2本身没有item_id字段,它的主键id就是table3中item_id关联的字段,所以用t2.id AS item_id来满足你展示item_id的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:40:30