SQL Server Union聯合查詢
阿新 • • 發佈:2019-01-08
有的時候我們需要組合兩個完全不同的查詢結果集,而這兩個查詢結果之間沒有必然的聯絡,只是我們需要將他們顯示在一個結果集中而已。在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操作。