如何合并两张SQL表并新增标识数据来源的id列
实现方案
以下是不同场景下的常用实现方式:
1. 数据库SQL场景
假设第一张表名为table_old,第二张表名为table_new,通过UNION ALL拼接两个查询结果即可,合并前分别新增标识列:
SELECT name, value, 'old' AS id FROM table_old UNION ALL SELECT name, value, 'new' AS id FROM table_new;
如果需要对合并后的结果去重,可以把UNION ALL替换为UNION。
2. Python Pandas场景
如果是处理本地表格文件(csv/excel等),可以用Pandas实现:
import pandas as pd # 读取两张表,以下为示例构造数据,实际使用时替换为read_csv/read_excel读取逻辑 df_old = pd.DataFrame({'name': ['a1','a2','b1'], 'value': [45,77,99]}) df_new = pd.DataFrame({'name': ['e1','f5','z9'], 'value': [11,99,99]}) # 分别新增来源标识列 df_old['id'] = 'old' df_new['id'] = 'new' # 合并两张表 df_result = pd.concat([df_old, df_new], ignore_index=True) # 输出结果,需要保存的话可以用to_csv/to_excel方法 print(df_result)
参数ignore_index=True用于重置合并后的行索引,不需要保留原表单独索引时建议添加。
3. Excel场景
小批量数据可以直接手动操作:
- 给第一张表新增第三列,表头填
id,所有数据行填充old - 给第二张表新增第三列,表头填
id,所有数据行填充new - 把第二张表表头之外的所有数据复制粘贴到第一张表的末尾即可
- 批量操作可以用Power Query:分别导入两张表后各自添加值为old/new的自定义列,再执行追加查询合并即可。
内容的提问来源于stack exchange,提问作者user13467695
相关产品推荐
相关产品推荐

