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

结合左外连接、内连接与聚合函数查询返回空结果集问题

核心错误

你的写法核心问题出在GROUP BY的规则不符合要求:
所有主流关系型数据库均要求,SELECT子句中未被聚合函数包裹的字段,必须全部出现在GROUP BY子句中。你当前查询里r.text既没有被聚合函数包裹,也没有加入GROUP BY列表,当数据库开启严格校验模式时,会直接判定语句非法返回空,或者直接报错。

修复方案

因为你需要在Reviews无匹配时返回NULL,用任意聚合函数包裹r.text即可(这里用MAX/MIN都可以,单个NULL值的聚合结果仍然是NULL,完全符合你的预期),修改后的语句如下:

SELECT c.id_customer, MIN(o.order_date) order_date, MAX(r.text) review_text
FROM Customer c
JOIN Profile p ON c.id_customer = p.id_profile 
LEFT OUTER JOIN Orders o ON o.id_customer = c.id_customer AND o.order_type = 'Online'
LEFT OUTER JOIN Reviews r ON r.id_profile = p.id_profile AND r.score = 5
WHERE c.id_customer = 1234
GROUP BY c.id_customer

额外检查点

注意你给出的Reviews表结构中用户关联字段是id_profile,但你原查询语句中关联条件写的是r.id_reviewer = p.id_profile,如果不是简化示例时的笔误,字段名不匹配也会导致关联结果不符合预期,请优先核对实际表结构的字段名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:00:03