Definir operadores
Aplica-se a: Databricks SQL
Databricks Runtime
Combina os subquery1
e subquery2
anteriores num único. O Azure Databricks dá suporte a três tipos de operadores de conjunto:
EXCEPT
INTERSECT
UNION
Sintaxe
{ UNION | INTRECEPT | EXCEPT } [ ALL | DISTINCT ] subquery2 } [...]
-
Quaisquer duas cláusulas
subquery
conforme especificado em SELECT (subselect). 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
mais as linhas desubquery2
.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 nas duas 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 desubquery1
.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 de conjunto INTERSECT
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 uma STRING
, o seu agrupamento será derivado aplicando 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