Nastavit operátory
Platí pro: , kontrola Databricks SQL Databricks Runtime
Kombinuje dva poddotazy do jednoho. Databricks SQL podporuje tři typy operátorů sady:
EXCEPT
INTERSECT
UNION
Syntaxe
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
poddotaz1, poddotaz2
Libovolné dvě
subquery
klauzule, jak je uvedeno v select. Oba poddotazy musí mít stejný počet sloupců a musí pro každý sloupec sdílet nejméně společný typ.UNION [ALL | DISTINCT]
Vrátí výsledek
subquery1 plus the rows of
poddotaz2'.Pokud
ALL
je zadáno, zachovají se duplicitní řádky.Pokud
DISTINCT
je zadán, výsledek neobsahuje žádné duplicitní řádky. Toto je výchozí nastavení.PROTÍNÁ [VŠE | DISTINCT]
Vrátí sadu řádků, které jsou v obou poddotazech.
Pokud
ALL
je zadán řádek, který se vsubquery1
subquery
i zobrazí vícekrát, se vrátí vícekrát.Pokud
DISTINCT
je zadán, výsledek neobsahuje duplicitní řádky. Toto je výchozí nastavení.KROMĚ [VŠE | DISTINCT ]
Vrátí řádky, které nejsou v
subquery1
subquery2
.Pokud
ALL
je zadána hodnota , odebere každý řádek vsubquery2
souboru přesně jednu z možných více shod zsubquery1
.Pokud
DISTINCT
je zadaný parametr , před použitím operace se odeberou duplicitnísubquery1
řádky, takže se odeberou všechny shody a výsledek nebude obsahovat žádné duplicitní řádky (spárované nebo neodpovídající). Toto je výchozí nastavení.Jako alternativu
EXCEPT
syntaxe můžete zadatMINUS
.
Při zřetězování mají operace INTERSECT
sady vyšší prioritu než UNION
a EXCEPT
.
Typ každého sloupce výsledků je nejméně společný typ příslušných sloupců v subquery1
a subquery2
.
Příklady
-- 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