Operadores Set

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva Runtime do Databricks

Combina duas subconsultas em uma única. O SQL do Databricks dá suporte a três tipos de operadores de conjunto:

  • EXCEPT
  • INTERSECT
  • UNION

Sintaxe

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

    Quaisquer duas cláusulas subquery, conforme especificado em SELECT. Ambas as subconsultas devem ter o mesmo número de colunas e compartilhar um tipo menos comum para cada coluna respectiva.

  • UNIÃO [TODOS | DISTINÇÃO]

    Retorna 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 conterá nenhuma linha duplicada. Esse é o padrão.

  • INTERSEÇÃO [TODOS | DISTINÇÃO]

    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 em subquery será retornada várias vezes.

    Se DISTINCT for especificado, o resultado não conterá linha duplicada. Esse é o padrão.

  • EXCEÇÃO [TODOS | DISTINÇÃO]

    Retorna as linhas nas subquery1 quais não estão no subquery2.

    Se ALL for especificado, cada linha no subquery2 removerá exatamente uma das várias correspondências subquery1 de.

    Se DISTINCT for especificado, as linhas duplicadas serão removidas de subquery1 antes de aplicar a operação, portanto, todas as correspondências serão removidas e o resultado não terá nenhuma linha duplicada (correspondente ou não correspondente). Esse é o padrão.

    Você pode especificar MINUS como uma alternativa de sintaxe para EXCEPT.

Quando as operações INTERSECT de conjunto de encadeamento têm uma precedência mais alta do que UNION e EXCEPT.

O tipo de cada coluna de resultado é o tipo menos comum das respectivas colunas no e subquery1 no 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