SQL合并含相同/不同列的多表为唯一表的方案咨询
结论
左连接不是实现该需求的最优方案:
左连接的逻辑是基于指定关联键匹配不同表的行,而你的需求是保留三个数据集的全部独立行、不需要跨行匹配,使用左连接不仅会增加不必要的关联逻辑,还可能因为关联键无交集丢失其他表的行。
你需要的是带列自动对齐的纵向追加/合并操作:所有表按行堆叠,相同列名自动合并为一列,仅存在于单表的列自动补空,完全匹配你的预期输出要求。
常见工具实现方法
Python Pandas
使用pd.concat方法即可自动完成列对齐、公共列合并,无需额外处理重复列:
import pandas as pd # 读取三个数据集 df1 = pd.read_csv("dataset1.csv") df2 = pd.read_csv("dataset2.csv") df3 = pd.read_csv("dataset3.csv") # 纵向合并,自动对齐列,缺失值填充为空 result = pd.concat([df1, df2, df3], ignore_index=True)
SQL
使用带列补全的UNION ALL实现,手动给每个表补全缺失的列即可:
SELECT Customer_ID, Date, Category, Address, City, School, NULL AS Country, NULL AS Zipcode, NULL AS University FROM dataset1 UNION ALL SELECT Customer_ID, Date, Category, NULL AS Address, NULL AS City, NULL AS School, Country, Zipcode, NULL AS University FROM dataset2 UNION ALL SELECT Customer_ID, Date, Category, NULL AS Address, NULL AS City, School, NULL AS Country, NULL AS Zipcode, University FROM dataset3
Excel Power Query
- 依次将三个表导入Power Query编辑器
- 点击「主页」选项卡→「追加查询」→选择「将三个或更多表追加到一起」
- 将三个表添加到右侧待合并列表,确认后即可自动按列名对齐,公共列仅保留一份。
内容的提问来源于stack exchange,提问作者LdM
相关产品推荐
相关产品推荐

