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

3张MySQL表关联聚合查询未得到预期结果问题求助

问题原因

你写的SQL统计结果不符合预期,核心是多表左连后产生了笛卡尔积重复行:要是同一个Code在TableA或者TableC里有多条匹配记录,会把TableB对应的行重复复制多份,最后算出来的SUM(TableB.Mass)会比真实值大,count计数也会重复统计相同的Code。

修复方案

可以直接在计数的时候加DISTINCT去重,避免重复统计,改后的SQL如下:

SELECT 
    COUNT(DISTINCT TableA.Code) AS a_code_count,
    SUM(TableB.Mass) AS total_mass,
    COUNT(DISTINCT TableC.Code) AS c_code_count
FROM TableB 
LEFT JOIN TableA ON TableA.Code = TableB.Code 
LEFT JOIN TableC ON TableA.Code = TableC.Code
GROUP BY TableB.Grade

如果你的数据量比较大,推荐用预聚合去重的写法,执行效率更高:

SELECT 
    COUNT(a.Code) AS a_code_count,
    SUM(b.Mass) AS total_mass,
    COUNT(c.Code) AS c_code_count
FROM TableB b
LEFT JOIN (SELECT DISTINCT Code FROM TableA) a ON b.Code = a.Code
LEFT JOIN (SELECT DISTINCT Code FROM TableC) c ON b.Code = c.Code
GROUP BY b.Grade

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:39:00