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

LEFT OUTER JOIN查询无关联冰淇淋的制造商问题咨询

SQL查询问题解答

1. LEFT OUTER JOIN的关联逻辑

表1 LEFT OUTER JOIN 表2的核心逻辑是保留左表(表1)的所有记录,右表(表2)中匹配到关联条件的记录会正常拼接,匹配不到的部分所有字段自动填充为NULL。

2. 你当前的关联顺序错误

你的需求是覆盖所有未生产冰淇淋的制造商,也就是要完整保留manufacturer表的所有记录,所以左表应该是manufacturer,而不是ice_cream。你原来的写法是ice_cream左连manufacturer,只能保留所有有冰淇淋对应的制造商,永远查不到没生产过冰淇淋的Gelatron(manufacturer_id=3)。

3. ON子句条件问题

你在ON子句里加的OR manufacturer.manufacturer_name IS NULL是完全多余的,既不需要放在ON里也不需要放在WHERE里:

  • 左连接的NULL是匹配失败时自动生成的,不需要额外加条件触发
  • 如果把这个条件放到WHERE里,反而会过滤掉你想要保留的、没有生产冰淇淋的制造商记录。

正确的查询代码

SELECT 
  m.manufacturer_id, 
  m.manufacturer_name, 
  ic.ice_cream_id, 
  ic.ice_cream_name
FROM manufacturer m
LEFT OUTER JOIN ice_cream ic
  ON m.manufacturer_id = ic.manufacturer_id
ORDER BY m.manufacturer_id, ic.ice_cream_id ASC;

该查询返回的结果会包含manufacturer_id=3的Gelatron记录,对应的ice_cream_id和ice_cream_name都是NULL,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:06:02