Condividi tramite


Operatori set

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Combina il subquery1 e il subquery2 precedenti in un unico elemento. Azure Databricks supporta tre tipi di operatori set:

  • EXCEPT
  • INTERSECT
  • UNION

Sintassi

{ UNION | INTRECEPT | EXCEPT } [ ALL | DISTINCT ] subquery2 } [...]
  • sottoquery 2

    Due clausole subquery specificate in SELECT (sottoseleziona). Entrambe le sottoquery devono avere lo stesso numero di colonne e condividere un tipo comune minimo per ogni rispettiva colonna.

  • UNION [ALL | DISTINCT]

    Restituisce il risultato di subquery1 più le righe di 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 in subquery1 e in subquery 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 in subquery2.

    Se ALL viene specificato, ogni riga in subquery2 rimuoverà esattamente una delle eventuali corrispondenze multiple presenti in subquery1.

    Se DISTINCT viene specificato, le righe duplicate vengono rimosse prima subquery1 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 per EXCEPT.

Quando le operazioni di concatenamento del set INTERSECT presentano 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.

Se la colonna dei risultati è un STRING le relative regole di confronto vengono derivate applicando le regole di precedenza delle regole di confronto alle colonne 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