Partilhar via


Definir operadores

Aplica-se a: Marque Sim Databricks SQL Marque Sim 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 no subquery1 e no subquery 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 em subquery2.

    Se ALL for especificado, cada linha em subquery2 removerá exatamente uma das possíveis correspondências múltiplas do subquery1.

    Se DISTINCT for especificado, as linhas duplicadas são removidas antes de subquery1 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 para EXCEPT.

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.

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