1. 程式人生 > >SQL Server Union聯合查詢

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操作。