使用 UNION 運算子
UNION 運算子允許將兩個以上的查詢結果集,合併成單一結果集。 有兩種作法:
- UNION - 合併的結果不含重複項目。
- UNION ALL - 合併的結果集包含重複項目。
提示
一個集合中的 NULL 視同另一個集合中的 NULL。
使用 UNION 合併結果集時,有兩個規則:
- 在所有查詢中,資料行的數目和順序都必須相同。
- 資料類型必須相容。
注意
UNION 與 JOIN 不同。 JOIN 比較兩個資料表的資料行,以建立由兩個資料表的資料列所組成的結果集。 UNION 將兩個結果集串連在一起:第一個結果集的所有資料列都附加至第二個結果集的資料列。
簡單舉例,假設有兩份客戶名單及其傳回的結果集。 第一個查詢傳回 CustomerID 介於 1 到 9 之間的客戶。
SELECT CustomerID, companyname, FirstName + ' ' + LastName AS 'Name'
FROM SalesLT.Customer
WHERE CustomerID BETWEEN 1 AND 9;
第二個查詢傳回 CustomerID 介於 10 到 19 之間的客戶。
SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 10 AND 19;
若要將這兩個查詢合併成相同的結果集,請使用 UNION 運算子:
SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 1 AND 9
UNION
SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 10 AND 19;
這是傳回的結果集:
如同所有 Transact-SQL 陳述式,除非明確指定,否則不保證排序次序。 如果您需要排序的輸出,請在第二個查詢結尾新增 ORDER BY 子句。
使用 UNION 或 UNION ALL 時,兩個查詢必須有相同的資料行數目,而且資料行必須是相同的資料類型,您才能聯結不同查詢的資料列。