SQL Server如何合并两张表为一张表?

作者:技术拾光

时间:2026-06-13

浏览:427

SQLServer合并表时,UNIONALL保留重复行,UNION自动去重并排序;追加数据用INSERT...SELECT需明确字段列表;创建新表合并可用SELECT...INTOFROM子查询并加别名,目标表不存在自动新建。

文章目录

SQL Server 合并两张表:union 与 insert into select 方法详解

在数据库操作中,将两张表的数据合并到一张表是常见需求。以下直接给出SQL语句示例:

SQL Server如何合并两张表为一张表?

  • 如需保留所有数据(包括重复行):
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 适用于追加数据。根据是否需要去重、是否创建新表等场景灵活选用即可。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章