Partager via


Opérateurs de jeu

S’applique à :case marquée oui Databricks SQL case marquée oui Databricks Runtime

Combine deux sous-requêtes en une seule. Databricks SQL prend en charge trois types d’opérateurs d’ensemble :

  • EXCEPT
  • INTERSECT
  • UNION

Syntaxe

subquery1 { { UNION [ ALL | DISTINCT ] |
              INTERSECT [ ALL | DISTINCT ] |
              EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
  • subquery1, subquery2

    Deux clauses subquery comme spécifié dans SELECT. Les deux sous-requêtes doivent avoir le même nombre de colonnes et partager un moindre type commun pour chaque colonne correspondante.

  • UNION [ALL | DISTINCT]

    Retourne le résultat de subquery1 plus the rows of subquery2`.

    Si ALL est spécifié, les lignes en double sont conservées.

    Si DISTINCT est spécifié, le résultat ne contient pas de lignes en double. Il s’agit de la valeur par défaut.

  • INTERSECT [ALL | DISTINCT]

    Retourne l’ensemble de lignes qui figurent dans les deux sous-requêtes.

    Si ALL est spécifié, une ligne apparaissant plusieurs fois dans subquery1, ainsi que dans subquery, est retournée plusieurs fois.

    Si DISTINCT est spécifié, le résultat ne contient pas de lignes en double. Il s’agit de la valeur par défaut.

  • EXCEPT [ALL | DISTINCT ]

    Retourne les lignes figurant dans subquery1 qui ne pas figurent pas dans subquery2.

    Si ALL est spécifié, chaque ligne dans subquery2 supprime de subquery1 exactement une des correspondances éventuellement multiples.

    Si DISTINCT est spécifié, les lignes en double sont supprimées de subquery1 avant l’application de l’opération, de sorte que toutes les correspondances sont supprimées et que le résultat ne contient pas de lignes en double (correspondantes ou non). Il s’agit de la valeur par défaut.

    Vous pouvez spécifier MINUS comme une alternative syntaxique pour EXCEPT.

Lorsque le chaînage d’opérations d’ensemble INTERSECT a une priorité plus élevée que UNION et EXCEPT.

Le type de chaque colonne de résultats est le type le moins courant des colonnes correspondantes dans subquery1 et subquery2.

Si la colonne de résultat est un STRING son classement est dérivé en appliquant les règles de priorité de classement aux colonnes des sous-requêtes.

Exemples

-- 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