合并7个结构相同的SQL表所有行,应选用哪种Join操作?
正确的解决方案:使用
UNION ALL或UNION而非Join操作 嘿,你这个需求其实不需要用SQL Join操作哦!Join的作用是基于关联字段把多个表的列横向拼接在一起,而你要的是把多个结构一致的表的行纵向合并,这时候应该用UNION或者UNION ALL。
两者的区别:
UNION ALL:会直接把所有表的行全部合并,不会检查重复行,性能更高。如果你的7个表中没有重复数据,或者你不需要去除重复行,这是最优选择。UNION:会自动去除合并结果中的重复行,但因为需要额外做重复检查,性能比UNION ALL差一些。
示例SQL代码(以7个表为例):
SELECT X, Y, Z FROM Table1 UNION ALL SELECT X, Y, Z FROM Table2 UNION ALL SELECT X, Y, Z FROM Table3 UNION ALL SELECT X, Y, Z FROM Table4 UNION ALL SELECT X, Y, Z FROM Table5 UNION ALL SELECT X, Y, Z FROM Table6 UNION ALL SELECT X, Y, Z FROM Table7;
执行这段语句后,就能得到你想要的Final Table——所有表的行按顺序合并,结构和原表完全一致。
内容的提问来源于stack exchange,提问作者Anup Buchke




