集合演算子
適用対象: Databricks SQL Databricks Runtime
2 つのサブクエリを 1 つに結合します。 Databricks SQL では、次の 3 種類のセット演算子がサポートされています。
EXCEPT
INTERSECT
UNION
構文
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subquery1, subquery2
subquery
に指定されている、任意の 2 つの 句。 両方のサブクエリの列数は同じである必要があり、それぞれの列に対して最も一般的でない型を共有します。UNION [ALL | DISTINCT]
subquery1 plus the rows of
subquery2` の結果を返します。ALL
を指定した場合は、重複する行が保持されます。DISTINCT
を指定した場合、結果には重複する行は含まれません。 既定のプランです。INTERSECT [ALL | DISTINCT]
両方のサブクエリに含まれる行のセットを返します。
ALL
が指定されている場合は、subquery1
とsubquery
に複数回出現する行が複数回返されます。DISTINCT
を指定した場合、結果には重複する行は含まれません。 既定のプランです。EXCEPT [ALL | DISTINCT ]
subquery1
に含まれていないsubquery2
の行を返します。ALL
を指定した場合、subquery2
の各行は、subquery1
からの複数の一致から 1 つだけ削除します。DISTINCT
を指定した場合、操作を適用する前にsubquery1
から重複する行が削除されます。そのため、すべての一致が削除されて、結果には (一致または不一致の) 重複する行は含まれません。 既定のプランです。MINUS
は、EXCEPT
の構文に代わるものとして指定できます。
セット操作のチェーンを設定する場合、INTERSECT
の優先順位が UNION
と EXCEPT
よりも高くなります。
各結果列の型は、subquery1
と subquery2
の各列の最も一般的でない型です。
結果列が
例
-- 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