如何合并两个表并新增类型属性列标识数据所属的原表
实现方案
直接用UNION ALL拼接两个表的查询结果即可,查询时为每个表手动新增固定值的来源标识列:
SELECT 'table1' AS 来源表, id, name FROM table1 UNION ALL SELECT 'table2' AS 来源表, id, name FROM table2
说明
- 两条
SELECT语句里的'table1'/'table2'是固定字符串常量,会作为新增列的固定值,别名来源表就是你要的标识列名,可以根据需求自定义。 - 优先用
UNION ALL而不是UNION:UNION会自动对合并后的结果去重,如果你两个表存在完全相同的id+name数据,会被误删;UNION ALL会原样保留两个表的所有原始数据,性能也更高。 - 只要保证两个
SELECT返回的列数、对应列的数据类型完全一致即可,这里两个表原结构相同,新增列都是字符串类型,完全符合要求。
如果需要对合并后的结果排序,直接在语句末尾加排序规则即可:
SELECT 'table1' AS 来源表, id, name FROM table1 UNION ALL SELECT 'table2' AS 来源表, id, name FROM table2 ORDER BY id ASC
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

