Ustawianie operatorów
Dotyczy: Databricks SQL Databricks Runtime
Łączy dwa podzapytania w jeden. Usługa Databricks SQL obsługuje trzy typy operatorów zestawów:
EXCEPT
INTERSECT
UNION
Składnia
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subquery1, subquery2
Wszystkie dwie
subquery
klauzule określone w elemektorze SELECT. Oba podzapytania muszą mieć taką samą liczbę kolumn i współdzielić najmniej wspólny typ dla każdej odpowiedniej kolumny.UNION [ALL | DISTINCT]
Zwraca wynik podzapytania2
subquery1 plus the rows of
".Jeśli
ALL
określono zduplikowane wiersze, są zachowywane.Jeśli
DISTINCT
zostanie określony wynik nie zawiera żadnych zduplikowanych wierszy. Jest to opcja domyślna.INTERSECT [ALL | DISTINCT]
Zwraca zestaw wierszy, które znajdują się w obu podzapytaniach.
Jeśli
ALL
zostanie określony wiersz, który pojawia się wiele razy wsubquery1
obiekcie , jak również wsubquery
, zostanie zwrócony wiele razy.Jeśli
DISTINCT
zostanie określony wynik nie zawiera zduplikowanych wierszy. Jest to opcja domyślna.Z WYJĄTKIEM [WSZYSTKIE | DISTINCT ]
Zwraca wiersze, w
subquery1
których nie ma wartościsubquery2
.Jeśli
ALL
zostanie określony, każdy wiersz wsubquery2
pliku spowoduje usunięcie dokładnie jednego z prawdopodobnie wielu dopasowań z elementusubquery1
.Jeśli
DISTINCT
zostanie określony, zduplikowane wiersze zostaną usunięte przedsubquery1
zastosowaniem operacji, więc wszystkie dopasowania zostaną usunięte, a wynik nie będzie miał zduplikowanych wierszy (dopasowanych lub niezgodnych). Jest to opcja domyślna.Można określić
MINUS
jako alternatywę składni dla elementuEXCEPT
.
W przypadku tworzenia łańcucha operacji INTERSECT
zestawu ma wyższy priorytet niż UNION
i EXCEPT
.
Typ każdej kolumny wyników jest najmniej typowym typem odpowiednich kolumn w kolumnach subquery1
i subquery2
.
Przykłady
-- 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