セット演算子
説明
セット演算子は、2 つの入力リレーションを 1 つに結合するために使用されます。Spark SQL は 3 種類のセット演算子をサポートしています
EXCEPT
またはMINUS
INTERSECT
UNION
入力リレーションには同じ数の列があり、それぞれの列に互換性のあるデータ型がなければならないことに注意してください。
EXCEPT
EXCEPT
と EXCEPT ALL
は、1 つのリレーションにあってもう一方にはない行を返します。 EXCEPT
(または EXCEPT DISTINCT
)は個別行のみを取り、 EXCEPT ALL
は結果行から重複を削除しません。 MINUS
は EXCEPT
の別名です。
構文
[ ( ] relation [ ) ] EXCEPT | MINUS [ ALL | DISTINCT ] [ ( ] relation [ ) ]
例
-- Use number1 and number2 tables to demonstrate set operators in this page.
SELECT * FROM number1;
+---+
| c|
+---+
| 3|
| 1|
| 2|
| 2|
| 3|
| 4|
+---+
SELECT * FROM number2;
+---+
| c|
+---+
| 5|
| 1|
| 2|
| 2|
+---+
SELECT c FROM number1 EXCEPT SELECT c FROM number2;
+---+
| c|
+---+
| 3|
| 4|
+---+
SELECT c FROM number1 MINUS SELECT c FROM number2;
+---+
| c|
+---+
| 3|
| 4|
+---+
SELECT c FROM number1 EXCEPT ALL (SELECT c FROM number2);
+---+
| c|
+---+
| 3|
| 3|
| 4|
+---+
SELECT c FROM number1 MINUS ALL (SELECT c FROM number2);
+---+
| c|
+---+
| 3|
| 3|
| 4|
+---+
INTERSECT
INTERSECT
と INTERSECT ALL
は、2 つのリレーションの両方にある行を返します。 INTERSECT
(または INTERSECT DISTINCT
)は個別行のみを取り、 INTERSECT ALL
は結果行から重複を削除しません。
構文
[ ( ] relation [ ) ] INTERSECT [ ALL | DISTINCT ] [ ( ] relation [ ) ]
例
(SELECT c FROM number1) INTERSECT (SELECT c FROM number2);
+---+
| c|
+---+
| 1|
| 2|
+---+
(SELECT c FROM number1) INTERSECT DISTINCT (SELECT c FROM number2);
+---+
| c|
+---+
| 1|
| 2|
+---+
(SELECT c FROM number1) INTERSECT ALL (SELECT c FROM number2);
+---+
| c|
+---+
| 1|
| 2|
| 2|
+---+
UNION
UNION
と UNION ALL
はどちらかのリレーションに見つかった行を返します。 UNION
(または UNION DISTINCT
)は個別行のみを取ると同時に UNION ALL
は結果行から重複を削除しません。
構文
[ ( ] relation [ ) ] UNION [ ALL | DISTINCT ] [ ( ] relation [ ) ]
例
(SELECT c FROM number1) UNION (SELECT c FROM number2);
+---+
| c|
+---+
| 1|
| 3|
| 5|
| 4|
| 2|
+---+
(SELECT c FROM number1) UNION DISTINCT (SELECT c FROM number2);
+---+
| c|
+---+
| 1|
| 3|
| 5|
| 4|
| 2|
+---+
SELECT c FROM number1 UNION ALL (SELECT c FROM number2);
+---+
| c|
+---+
| 3|
| 1|
| 2|
| 2|
| 3|
| 4|
| 5|
| 1|
| 2|
| 2|
+---+