MySQL多表合并咨询:12个月度表如何合并为年度总表?
合并同结构月度数据表为年度总表的解决方案
你用INNER JOIN达不到需求是因为这个操作是横向关联匹配行,而你需要的是纵向堆叠同结构的行数据,这种场景应该用UNION ALL(无需去重时优先用)或UNION(需要自动去重重复行时用)。
基础示例(假设表名为month_1至month_12,列结构完全一致)
SELECT col1, col2, col3 FROM month_1 UNION ALL SELECT col1, col2, col3 FROM month_2 UNION ALL SELECT col1, col2, col3 FROM month_3 -- 依次添加剩余9个月度表的查询语句 UNION ALL SELECT col1, col2, col3 FROM month_12;
优化建议:添加月份标识
如果原表没有自带月份区分字段,建议手动添加,方便后续数据溯源:
SELECT '2024-01' AS data_month, col1, col2, col3 FROM month_1 UNION ALL SELECT '2024-02' AS data_month, col1, col2, col3 FROM month_2 -- 按月份依次替换日期标识,直到month_12
注意事项
UNION ALL不会检查重复行,执行效率比UNION更高,若能确认各月度表无重复数据,优先使用;- 所有
SELECT语句返回的列数、列数据类型必须完全一致,否则会报错。
内容的提问来源于stack exchange,提问作者Sumxy
相关产品推荐
相关产品推荐

