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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM