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

SQL多表关联查询获取所有产品总销售额的错误排查

问题分析

你原有的SQL存在以下几处逻辑和语法问题:

  • 别名不符合规范:as total sales包含空格,需改为无空格的total_sales或用引号包裹
  • 关联逻辑错误:product右联receipt_product后又内联receipt,会直接过滤掉没有交易记录的产品,无法满足「查询所有产品」的需求
  • 空值处理缺失:没有交易记录的产品求和后结果为NULL,需转换为0更符合业务含义
  • 过滤条件不符合需求:HAVING total_sales < 100会过滤掉总销售额≥100的产品,若确实需要查询全量产品可删除该条件,若要保留过滤规则需适配空值转换逻辑
修正后的SQL

全量产品销售额查询版本(符合你描述的核心需求)

SELECT 
    p.name, 
    COALESCE(SUM(r.total), 0) AS total_sales 
FROM 
    product p
LEFT JOIN 
    receipt_product rp ON p.product_id = rp.product_id 
LEFT JOIN 
    receipt r ON rp.receipt_id = r.receipt_id 
GROUP BY 
    p.name

保留<100过滤条件的版本

如果你确实需要只返回总销售额小于100的产品,可使用以下版本:

SELECT 
    p.name, 
    COALESCE(SUM(r.total), 0) AS total_sales 
FROM 
    product p
LEFT JOIN 
    receipt_product rp ON p.product_id = rp.product_id 
LEFT JOIN 
    receipt r ON rp.receipt_id = r.receipt_id 
GROUP BY 
    p.name
HAVING 
    total_sales < 100

内容的提问来源于stack exchange,提问作者Thet Paing Htet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:36:04