Ustawianie operatorów (SQL usługi Databricks)

Łączy dwa podquery w jeden. Usługa Databricks SQL obsługuje trzy typy operatorów zestawu:

  • EXCEPT
  • INTERSECT
  • UNION

Składnia

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

    Wszystkie dwie subquery klauzule określone w klauzuli SELECT (Databricks SQL). Oba podquery muszą mieć taką samą liczbę kolumn i współdzielić najmniej typowy typ dla każdej odpowiedniej kolumny.

  • UNII [WSZYSTKIE | DISTINCT]

    Zwraca wynik subquery1 plus the rows of podquery2".

    Jeśli ALL określono zduplikowane wiersze, są zachowywane.

    Jeśli DISTINCT zostanie określony wynik nie zawiera żadnych zduplikowanych wierszy. Jest to opcja domyślna.

  • INTERSECT [WSZYSTKIE | DISTINCT]

    Zwraca zestaw wierszy, które znajdują się w obu podquerach.

    Jeśli ALL zostanie określony wiersz, który pojawia się wiele razy w obiekcie subquery1 , a także in subquery , zostanie zwrócony wiele razy.

    Jeśli DISTINCT zostanie określony wynik nie zawiera zduplikowanych wierszy. Jest to opcja domyślna.

  • Z WYJĄTKIEM [WSZYSTKIE | DISTINCT ]

    Zwraca wiersze, w subquery1 których nie ma wartości subquery2.

    Jeśli ALL zostanie określony, każdy wiersz w subquery2 pliku spowoduje usunięcie dokładnie jednego z prawdopodobnie wielu dopasowań z subquery1elementu .

    Jeśli DISTINCT zostanie określony, zduplikowane wiersze zostaną usunięte subquery1 przed zastosowaniem operacji, więc wszystkie dopasowania zostaną usunięte, a wynik nie będzie miał zduplikowanych wierszy (dopasowanych lub niezgodnych). Jest to opcja domyślna.

    Można określić MINUS jako alternatywę składniową dla EXCEPT.

W przypadku tworzenia łańcucha operacji INTERSECT zestawu ma wyższy priorytet niż UNION i EXCEPT.

Typ każdej kolumny wyników jest najmniej typowym typem odpowiednich kolumn w subquery1 i subquery2.

Przykłady

-- 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
  2
  2