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
subquery
Due clausole specificate in SELECT. Entrambe le sottoquery devono avere lo stesso numero di colonne e condividere un tipo meno comune per ogni rispettiva colonna.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 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
ALL
viene specificato, ogni riga insubquery2
rimuoverà esattamente 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 le operazioni INTERSECT
del set di concatenamento hanno una precedenza maggiore rispetto a UNION
e EXCEPT
.
Il tipo di ogni colonna dei risultati è il tipo meno comune delle rispettive colonne in subquery1
e subquery2
.
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