SQLServer合并表时,UNIONALL保留重复行,UNION自动去重并排序;追加数据用INSERT...SELECT需明确字段列表;创建新表合并可用SELECT...INTOFROM子查询并加别名,目标表不存在自动新建。
SQL Server如何合并两张表为一张表?
作者:技术拾光
时间:2026-06-13
浏览:427
文章目录
SQL Server 合并两张表:union 与 insert into select 方法详解
在数据库操作中,将两张表的数据合并到一张表是常见需求。以下直接给出SQL语句示例:

- 如需保留所有数据(包括重复行):
select * from T1 union all select * from T2
- 如需自动去重(只保留不重复的行):
select * from T1 union select * from T2
两个关键运算符的区别
union:取并集,自动去重(相当于加distinct),并按默认规则排序。union all:取并集,保留所有行,包含重复数据,且不排序——性能通常优于union。
两张表示例
table1:dbo.[Druglist1]table2:dbo.[Druglist2]
若需将table1的数据追加到table2中,使用insert into + select语句:
insert into table2(字段1,字段2) select 字段1,字段2 from table1
注意:
必须逐一列出字段名,自动编号(自增字段)不能直接写入,除非另写算法逐条处理。
方法一:将table1数据插入table2
1. 最简单直接的方式:
insert into table2 select * from table1
示例:
insert into dbo.[Druglist2] select * from dbo.[Druglist1]
方法二:创建新表并合并数据
select * into newtable from (select * from table1 union all select * from table2)
具体示例:
select * into dbo.[Drug list4] from (select * from dbo.[Drug list1] union all select * from dbo.[Drug list2]) a
注意括号后的 a 是子查询的别名,必须添加。若不添加别名,SQL Server会因括号内缺少表名而报错。
总结
以上为SQL Server中合并两张表的两种核心思路:union / union all 适用于查询合并,insert into select 适用于追加数据。根据是否需要去重、是否创建新表等场景灵活选用即可。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章