Set 運算子
適用于: Databricks SQL Databricks Runtime
將兩個子查詢合併成單一查詢。 Databricks SQL 支援三種類型的集合運算子:
EXCEPT
INTERSECT
UNION
語法
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subquery1、 subquery2
SELECT中指定的任何兩
subquery
個子句。 這兩個子查詢必須具有相同數目的資料行,並為每個個別資料行共用最不通用的類型。UNION [ALL |DISTINCT]
傳回 subquery2' 的結果
subquery1 plus the rows of
。如果
ALL
指定重複的資料列會保留。如果
DISTINCT
已指定 ,則結果不包含任何重複的資料列。 這是預設值。INTERSECT [ALL |DISTINCT]
傳回這兩個子查詢中的資料列集。
如果
ALL
指定了 在 中subquery1
出現多次的資料列,則會subquery
傳回多次。如果
DISTINCT
已指定 ,則結果不包含重複的資料列。 這是預設值。除了 [ALL |DISTINCT ]
傳回不在 中的資料
subquery2
列subquery1
。如果
ALL
已指定,中的每個subquery2
資料列都會從subquery1
移除其中一個可能有多個相符專案。如果
DISTINCT
已指定,則會在套用作業之前從subquery1
中移除重複的資料列,因此會移除所有相符專案,而且結果不會有重複的資料列 (相符或不相符的) 。 這是預設值。您可以將 指定
MINUS
為 的EXCEPT
語法替代方案。
當鏈結集作業 INTERSECT
的優先順序高於 UNION
和 EXCEPT
時。
每個結果資料行的類型都是 和 subquery2
中 subquery1
個別資料行的最小通用類型。
例子
-- 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