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

SQL关联查询NULL值问题:需返回supplier_id为空的符合条件订单

解决方法:改用左连接(LEFT JOIN)保留所有符合条件的订单

嘿,这问题太常见了!你当前的查询用的是隐式内连接(通过逗号分隔表+WHERE里的关联条件),这种连接方式只会返回所有表都能匹配上的行。当orders.supplier_id为NULL时,没法和suppliers.id匹配,所以这些订单就被自动过滤掉了。

要实现「保留所有geleverd=1的订单,不管supplier_id是否为NULL」的需求,你需要把orders和suppliers的关联改成左连接(LEFT JOIN)——左连接会牢牢保留左表(这里是orders)的所有行,即使右表(suppliers)没有对应的匹配记录(此时suppliers表的字段会返回NULL,正好符合你后续填充指定文本的需求)。

调整后的查询语句如下:

SELECT * 
FROM orders
JOIN products ON orders.product_id = products.id  -- 如果订单的product_id也可能为NULL,这里可以改成LEFT JOIN
LEFT JOIN suppliers ON orders.supplier_id = suppliers.id
WHERE orders.geleverd = 1;

关键细节说明:

  • 把原来的隐式连接改成了显式的JOIN语法,可读性更强,也能清晰区分不同的连接类型
  • 用LEFT JOIN suppliers替代原来的内连接逻辑,确保supplier_id为NULL的订单不会被过滤
  • 保留了geleverd = 1的条件,确保只返回已交付的订单

这样调整后,所有geleverd=1的订单都会被完整返回:当supplier_id有值时,会带上对应的供应商信息;当supplier_id为NULL时,suppliers表的字段会返回NULL,你后续的代码可以直接针对这些行做填充处理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:46:49