Operátorok beállítása
A következőkre vonatkozik: Databricks SQL Databricks Runtime
Két al lekérdezést egyesít egyetlenbe. A Databricks SQL háromféle halmaz-operátort támogat:
EXCEPT
INTERSECT
UNION
Syntax
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subquery1, subquery2
A SELECT-ben megadott két
subquery
záradék. Mindkét al lekérdezésnek azonos számú oszlopmal kell rendelkeznie, és az egyes oszlopokhoz legalább közös típussal kell rendelkeznie.UNION [ALL | DISTINCT]
A subquery2' eredményét
subquery1 plus the rows of
adja vissza.Ha
ALL
a megadott ismétlődő sorok megmaradnak.Ha
DISTINCT
meg van adva, az eredmény nem tartalmaz ismétlődő sorokat. Ez az alapértelmezett beállítás.INTERSECT [ALL | DISTINCT]
A két al lekérdezésben lévő sorok halmazát adja vissza.
Ha
ALL
meg van adva egy sor, amely többször jelenik meg a sorban és asubquery1
bebensubquery
is, a rendszer többször is visszaadja.Ha
DISTINCT
meg van adva, az eredmény nem tartalmaz ismétlődő sorokat. Ez az alapértelmezett beállítás.KIVÉVE [MIND | DISTINCT ]
Azokat a sorokat adja vissza, amelyekben
subquery1
nincsenek megadvasubquery2
.Ha
ALL
meg van adva, minden sorsubquery2
pontosan az egyiket távolítja el a több egyezésbőlsubquery1
.Ha
DISTINCT
meg van adva, a művelet alkalmazása előtt a program eltávolítjasubquery1
az ismétlődő sorokat, így az összes egyezés el lesz távolítva, és az eredmény nem lesz ismétlődő sorokkal (egyező vagy nem egyező). Ez az alapértelmezett beállítás.Szintaxis alternatívaként megadható
MINUS
a következőhözEXCEPT
: .
Ha a láncolásos halmazműveletek INTERSECT
nagyobb elsőbbséget élveznek, mint UNION
és EXCEPT
.
Az egyes eredményoszlopok típusa a legkevésbé gyakori típus a megfelelő és subquery1
subquery2
a .
Példák
-- 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