Compartir vía


Operadores de conjuntos

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Combina dos subconsultas en una sola. Databricks SQL admite tres tipos de operadores de conjunto:

  • EXCEPT
  • INTERSECT
  • UNION

Sintaxis

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

    Dos cláusulas subquery cualesquiera, como se especifica en SELECT. Ambas subconsultas deben tener el mismo número de columnas y compartir un tipo menos común para cada columna respectiva.

  • UNION [ALL | DISTINCT]

    Devuelve el resultado de subquery1 plus the rows of subconsulta 2".

    Si se especifica ALL, se conservan las filas duplicadas.

    Si se especifica DISTINCT, el resultado no contiene filas duplicadas. Este es el valor predeterminado.

  • INTERSECT [ALL | DISTINCT]

    Devuelve el conjunto de filas que se encuentran en ambas subconsultas.

    Si se especifica ALL, se devolverá varias una fila que aparece varias veces en subquery1, así como en subquery.

    Si se especifica DISTINCT, el resultado no contiene filas duplicadas. Este es el valor predeterminado.

  • EXCEPT [ALL | DISTINCT ]

    Devuelve las filas en subquery1 que no están en subquery2.

    Si se especifica ALL, cada fila de subquery2 quitará exactamente una de las posibles coincidencias múltiples de subquery1.

    Si se especifica DISTINCT, las filas duplicadas se quitan de subquery1 antes de aplicar la operación, por lo que se quitan todas las coincidencias y el resultado no tendrá filas duplicadas (coincidentes o no coincidentes). Este es el valor predeterminado.

    Puede especificar MINUS como alternativa de sintaxis para EXCEPT.

Si se encadenan operaciones de conjunto, INTERSECT tiene una prioridad mayor que UNION y EXCEPT.

El tipo de cada columna de resultado es el tipo menos común de las columnas respectivas en subquery1 y subquery2.

Ejemplos

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