Operadores de conjuntos
Se aplica a: Databricks SQL
Databricks Runtime
Combina el subquery1
anterior y subquery2
en uno único. Azure Databricks admite tres tipos de operadores de conjunto:
EXCEPT
INTERSECT
UNION
Sintaxis
{ UNION | INTRECEPT | EXCEPT } [ ALL | DISTINCT ] subquery2 } [...]
-
Dos cláusulas
subquery
cualesquiera, como se especifica en SELECT (subselect). 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
más las filas desubquery2
.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 ensubquery1
, así como ensubquery
.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 ensubquery2
.Si se especifica
ALL
, cada fila desubquery2
quitará exactamente una de las posibles coincidencias múltiples desubquery1
.Si se especifica
DISTINCT
, las filas duplicadas se quitan desubquery1
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 paraEXCEPT
.
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
.
Si la columna de resultado es un STRING
, su intercalación se deriva aplicando las reglas de precedencia de intercalación a las columnas de las subconsultas.
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