run in this way,   no why,   only for you heart
CSDN博客(点击进入) CSDN
51CTO(点击进入) 51CTO

SQL Server Union联合查询

有的时候我们需要组合两个完全不同的查询结果集,而这两个查询结果之间没有必然的联系,只是我们需要将他们显示在一个结果集中而已。在SQL中可以使用UNION运算符来 将两个或者多个查询结果集联合为一个结果集中。

联合结果集不必受被联合的多个结果集之间的关系限制,不过使用UNION仍然有两个基本的原则需要遵守:
1.每个结果集必须有相同的列数;
2.每个结果集的列必须类型相容,即结果集的每个对应列的数据类型必须相同或者能够转换为同一种数据类型。

联合查询Union又有Union和Union All两种方式,下面分别说下他们的用法以及区别:
示例表数据如下:
在这里插入图片描述
这时两张表的数据,其中Name,Age,Address三行的数据类型相同,红色框内两表数据完全相同。
1.使用Union联合查询,执行SQL语句:

SELECT 
      TeacherName
      ,Age
      ,Address
  FROM [BlogDemo2].[dbo].[Teacher]
  Union  --联合查询
  SELECT 
       StudentName
      ,Age
      ,Address
  FROM [BlogDemo2].[dbo].[Student]

查询结果集如下:
在这里插入图片描述
可以看到两表重复的内容被去重复了,说明union联合查询有去重复的功能。

2.使用Union All联合查询,执行SQL语句:

  SELECT 
      TeacherName
      ,Age
      ,Address
  FROM [BlogDemo2].[dbo].[Teacher]
  Union All
  SELECT 
      StudentName
      ,Age
      ,Address
  FROM [BlogDemo2].[dbo].[Student]

查询结果集如下:
在这里插入图片描述
可以看到两张表所有数据都存在结果集中,包括两张表重复的数据也存在,说明union all联合查询是联合表的所有内容。

3.union和union all区别以及效率
union有去重复的功能,union all没有去重复功能,所以union的效率会低点,如果查询的结果集没有要求去重或者联合表中不存在重复数据 建议使用union all操作。

posted @ 2018-11-30 20:08  _小龙人  阅读(9971)  评论(0编辑  收藏  举报