如何用MySQL的GROUP BY与SUM关联查询展示用户a、b、c的总金额?
解决方案
要计算用户a、b、c各自的总金额,需要先合并两张表的用户金额数据,再分组求和,具体SQL语句如下:
SELECT user, SUM(money) AS total_money FROM ( -- 合并两张表的用户与金额记录 SELECT user, money FROM bills UNION ALL SELECT user, money FROM enroles ) AS combined_data GROUP BY user ORDER BY user;
执行结果说明
执行后会返回所有目标用户的总金额:
- 用户a:100(仅来自
bills表) - 用户b:500(
bills的200 +enroles的300) - 用户c:400(仅来自
enroles表)
直接使用GROUP BY失败的原因
如果单独对单表执行GROUP BY,只能得到该表内用户的金额;如果用JOIN关联两张表,会遗漏仅在其中一张表存在的用户(比如a和c)。而UNION ALL会保留所有用户的金额记录,基于合并后的结果分组求和,才能覆盖所有目标用户的金额统计。
内容的提问来源于stack exchange,提问作者Patrick Su
相关产品推荐
相关产品推荐

