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

SQL多表查询:关联失败时用NULL填充而非省略整行

解决方案:保留主表所有行并填充NULL

你当前的查询用的是隐式内连接(逗号分隔表+WHERE条件),这种连接只会返回所有表都满足匹配条件的行,不匹配的行直接被过滤,所以只得到了id=1的结果。

要实现保留table_a的所有行,不匹配的字段用NULL填充,得用LEFT JOIN(左外连接)——它会保留左表的全部记录,右表无匹配时对应字段自动填充NULL。

正确的SQL语句如下:

select
    a.id,
    c.name
from
    table_a a
left join table_b b on a.id = b.id
left join table_c c on b.name = c.name;

逻辑说明

  1. 以table_a作为左表,左连接table_b:确保table_a的所有id都被保留(你的案例里table_b和table_a的id是全匹配的,但写法上保持左连接逻辑更通用)。
  2. 再用table_b的name字段左连接table_c:当table_c中没有对应name值时,c.name就会显示为NULL。

执行后会得到你期望的结果:

idname
1a1
2NULL
3NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:35:18