集合運算子
適用於:Databricks SQL
Databricks Runtime
將上述 subquery1
和 subquery2
合併成單一。 Azure Databricks 支援三種類型的集合運算符:
EXCEPT
INTERSECT
UNION
語法
{ UNION | INTRECEPT | EXCEPT } [ ALL | DISTINCT ] subquery2 } [...]
-
SELECT (subselect) 中所指定的任何兩個
subquery
子句。 這兩個子查詢必須具有相同數目的數據行,並針對每個個別數據行共用最不通用的類型。 UNION [ALL |DISTINCT]
傳回
subquery1
的結果加上subquery2
的數據列。如果
ALL
指定重複的數據列會保留。如果
DISTINCT
指定 ,則結果不包含任何重複的數據列。 這是預設值。INTERSECT [ALL |DISTINCT]
傳回這兩個子查詢中的數據列集。
如果
ALL
指定了在 和subquery1
中subquery
出現多次的數據列,則會傳回多次。如果
DISTINCT
指定 ,則結果不包含重複的數據列。 這是預設值。除了 [ALL |DISTINCT ]
傳回不在 中的數據
subquery1
列subquery2
。如果指定了
ALL
,subquery2
中的每一行都會從subquery1
中精確地移除一個可能存在的多個匹配項。如果
DISTINCT
指定 ,則會在套用作業之前從subquery1
中移除重複的數據列,因此會移除所有相符專案,而且結果不會有重複的數據列(相符或不相符)。 這是預設值。您可以指定
MINUS
為的語法替代專案EXCEPT
。
當串接集合操作時,INTERSECT
的優先順序高於 UNION
和 EXCEPT
。
每個結果數據行的類型都是 subquery1
和 subquery2
中個別數據行最不常見的類型。
如果結果數據行是 STRING
其定序的衍生方式是將 定序優先順序規則套用至子查詢中的數據行。
範例
-- Use number1 and number2 tables to demonstrate set operators in this page.
> CREATE TEMPORARY VIEW number1(c) AS VALUES (3), (1), (2), (2), (3), (4);
> CREATE TEMPORARY VIEW number2(c) AS VALUES (5), (1), (1), (2);
> SELECT c FROM number1 EXCEPT SELECT c FROM number2;
3
4
> SELECT c FROM number1 MINUS SELECT c FROM number2;
3
4
> SELECT c FROM number1 EXCEPT ALL (SELECT c FROM number2);
3
3
4
> SELECT c FROM number1 MINUS ALL (SELECT c FROM number2);
3
3
4
> (SELECT c FROM number1) INTERSECT (SELECT c FROM number2);
1
2
> (SELECT c FROM number1) INTERSECT DISTINCT (SELECT c FROM number2);
1
2
> (SELECT c FROM number1) INTERSECT ALL (SELECT c FROM number2);
1
2
2
> (SELECT c FROM number1) UNION (SELECT c FROM number2);
1
3
5
4
2
> (SELECT c FROM number1) UNION DISTINCT (SELECT c FROM number2);
1
3
5
4
2
> SELECT c FROM number1 UNION ALL (SELECT c FROM number2);
3
1
2
2
3
4
5
1
1
2