合并多结构相似表并保留所有日期的SQL解决方案咨询
解决方案
实现思路
你需要先纵向合并所有结构一致的子表数据,再关联主表获取标签字段,而非用JOIN做横向拼接。
代码实现
SELECT t.id, t.date, t.count_A, t.count_B, m.label FROM ( -- 在此处拼接所有子表查询语句 SELECT id, date, count_A, count_B FROM 表1 UNION ALL SELECT id, date, count_A, count_B FROM 表2 UNION ALL -- 剩余50~70张子表依次按上述格式补充 SELECT id, date, count_A, count_B FROM 表N ) AS 合并子表 LEFT JOIN 主表 AS m ON 合并子表.id = m.id
注意事项
- 若各子表无重复数据,优先用
UNION ALL,性能远高于支持去重的UNION;若需要对全量合并数据去重,替换为UNION即可 - 用
LEFT JOIN关联主表可保留子表中所有存在的id记录,若仅需要保留主表中存在的id对应的数据,将LEFT JOIN改为INNER JOIN即可 - 后续新增同结构子表时,仅需在嵌套的UNION ALL块中追加对应子表的查询语句即可
内容的提问来源于stack exchange,提问作者Don Draper
相关产品推荐
相关产品推荐

