Definir operadores
Aplica-se a: Databricks SQL Databricks Runtime
Combina duas subconsultas em uma única. O Databricks SQL suporta três tipos de operadores de conjunto:
EXCEPT
INTERSECT
UNION
Sintaxe
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subconsulta1, subconsulta2
Quaisquer duas
subquery
cláusulas, conforme especificado em SELECT. Ambas as subconsultas devem ter o mesmo número de colunas e compartilhar um tipo menos comum para cada coluna respetiva.UNIÃO [TODOS | DISTINTO]
Devolve o resultado de
subquery1 plus the rows of
subquery2'.Se
ALL
for especificado, as linhas duplicadas serão preservadas.Se
DISTINCT
for especificado, o resultado não contém linhas duplicadas. Esta é a predefinição.CRUZAR [TODOS | DISTINTO]
Retorna o conjunto de linhas que estão em ambas as subconsultas.
Se
ALL
for especificado, uma linha que aparece várias vezes nosubquery1
e nosubquery
será retornada várias vezes.Se
DISTINCT
for especificado, o resultado não contém linhas duplicadas. Esta é a predefinição.EXCETO [TODOS | DISTINTO ]
Retorna as linhas nas
subquery1
quais não estão emsubquery2
.Se
ALL
for especificado, cada linha emsubquery2
removerá exatamente uma das possíveis correspondências múltiplas dosubquery1
.Se
DISTINCT
for especificado, as linhas duplicadas são removidas antes desubquery1
aplicar a operação, para que todas as correspondências sejam removidas e o resultado não tenha linhas duplicadas (correspondentes ou não correspondentes). Esta é a predefinição.Você pode especificar
MINUS
como uma alternativa de sintaxe paraEXCEPT
.
Ao encadear operações INTERSECT
de conjunto tem uma precedência maior do que UNION
e EXCEPT
.
O tipo de cada coluna de resultados é o tipo menos comum das respetivas colunas em subquery1
e subquery2
.
Se a coluna de resultados for um STRING
, o seu agrupamento será derivado ao aplicar as regras de precedência de agrupamento às colunas nas subconsultas.
Exemplos
-- 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