MySQL合并两张相同表后GROUP BY失效问题求助
解决方法
你的问题出在先分别统计再合并,而非先合并原始数据再统一统计。原SQL里的GROUP BY仅作用于第二张表的查询,两张表的统计结果只是被简单拼接,自然无法得到合并后的汇总值。
正确的SQL写法是先合并两张表中符合条件的原始数据,再对合并后的数据集按type分组统计:
SELECT type, COUNT(id) AS number, SUM(amount) AS total FROM ( -- 合并两张表的原始数据(仅保留统计需要的字段) SELECT type, id, amount FROM subscription WHERE DATE(timestamp) = '2022-10-18' UNION ALL SELECT type, id, amount FROM archive_subscription WHERE DATE(timestamp) = '2022-10-18' ) AS combined_data GROUP BY type;
补充说明
- 原SQL中
BETWEEN '2022-10-18' AND '2022-10-18'等价于DATE(timestamp) = '2022-10-18',后者写法更简洁直观。 UNION ALL会保留所有重复记录,适合合并同结构的原始数据,不会丢失任何需要统计的条目。
内容的提问来源于stack exchange,提问作者Shwan
相关产品推荐
相关产品推荐

