共用方式為


集合運算子

適用於:核取記號為「是」Databricks SQL 核取記號為「是」Databricks Runtime

將上述 subquery1subquery2 合併成單一。 Azure Databricks 支援三種類型的集合運算符:

  • EXCEPT
  • INTERSECT
  • UNION

語法

{ UNION | INTRECEPT | EXCEPT } [ ALL | DISTINCT ] subquery2 } [...]
  • 子查詢2

    SELECT (subselect) 中所指定的任何兩個 subquery 子句。 這兩個子查詢必須具有相同數目的數據行,並針對每個個別數據行共用最不通用的類型。

  • UNION [ALL |DISTINCT]

    傳回 subquery1 的結果加上 subquery2的數據列。

    如果 ALL 指定重複的數據列會保留。

    如果 DISTINCT 指定 ,則結果不包含任何重複的數據列。 這是預設值。

  • INTERSECT [ALL |DISTINCT]

    傳回這兩個子查詢中的數據列集。

    如果 ALL 指定了在 和 subquery1subquery 出現多次的數據列,則會傳回多次。

    如果 DISTINCT 指定 ,則結果不包含重複的數據列。 這是預設值。

  • 除了 [ALL |DISTINCT ]

    傳回不在 中的數據subquery1subquery2

    如果指定了 ALLsubquery2 中的每一行都會從 subquery1中精確地移除一個可能存在的多個匹配項。

    如果 DISTINCT 指定 ,則會在套用作業之前從 subquery1 中移除重複的數據列,因此會移除所有相符專案,而且結果不會有重複的數據列(相符或不相符)。 這是預設值。

    您可以指定 MINUS 為的語法替代專案 EXCEPT

當串接集合操作時,INTERSECT 的優先順序高於 UNIONEXCEPT

每個結果數據行的類型都是 subquery1subquery2中個別數據行最不常見的類型。

如果結果數據行是 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