Operatori Set
Si applica a: Databricks SQL Databricks Runtime
Combina due sottoquery in un'unica sottoquery. Databricks SQL supporta tre tipi di operatori set:
EXCEPT
INTERSECT
UNION
Sintassi
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subquery1, subquery2
Qualsiasi due clausole
subquery
come specificato in SELECT. Entrambe le sottoquery devono avere lo stesso numero di columns e condividere un tipo comune più piccolo per ogni rispettiva column.UNION [ALL | DISTINCT]
Restituisce il risultato di
subquery1 plus the rows of
subquery2'.Se
ALL
vengono mantenute righe duplicate.Se
DISTINCT
viene specificato il risultato non contiene righe duplicate. Si tratta dell'impostazione predefinita.INTERSECT [ALL | DISTINCT]
Restituisce il numero set di righe che si trovano in entrambe le sottoquery.
Se
ALL
viene specificata una riga che viene visualizzata più volte insubquery1
e insubquery
verrà restituita più volte.Se
DISTINCT
viene specificato il risultato non contiene righe duplicate. Si tratta dell'impostazione predefinita.EXCEPT [ALL | DISTINCT ]
Restituisce le righe in
subquery1
cui non si trovano insubquery2
.Se si specifica
ALL
, ogni riga insubquery2
remove una delle corrispondenze possibili dasubquery1
.Se
DISTINCT
viene specificato, le righe duplicate vengono rimosse primasubquery1
di applicare l'operazione, quindi tutte le corrispondenze vengono rimosse e il risultato non avrà righe duplicate (corrispondenti o non corrispondenti). Si tratta dell'impostazione predefinita.È possibile specificare
MINUS
come alternativa alla sintassi perEXCEPT
.
Quando si concatenano le operazioni di setINTERSECT
ha una precedenza maggiore rispetto a UNION
e EXCEPT
.
Il tipo di ciascun risultato column è il tipo meno comune dei rispettivi columns in subquery1
e subquery2
.
Se il risultato column è un STRING
, la sua collazione è derivata applicando le regole di precedenza di al columns nelle sottoquery.
Esempi
-- 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