Nastavit operátory

Platí pro:zaškrtnutá možnost Ano , kontrola Databricks SQL označená ano Databricks Runtime

Kombinuje dva poddotazy do jednoho. Databricks SQL podporuje tři typy operátorů sady:

  • EXCEPT
  • INTERSECT
  • UNION

Syntaxe

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

    Libovolné dvě subquery klauzule, jak je uvedeno v select. Oba poddotazy musí mít stejný počet sloupců a musí pro každý sloupec sdílet nejméně společný typ.

  • UNION [ALL | DISTINCT]

    Vrátí výsledek subquery1 plus the rows of poddotaz2'.

    Pokud ALL je zadáno, zachovají se duplicitní řádky.

    Pokud DISTINCT je zadán, výsledek neobsahuje žádné duplicitní řádky. Toto je výchozí nastavení.

  • PROTÍNÁ [VŠE | DISTINCT]

    Vrátí sadu řádků, které jsou v obou poddotazech.

    Pokud ALL je zadán řádek, který se v subquery1subquery i zobrazí vícekrát, se vrátí vícekrát.

    Pokud DISTINCT je zadán, výsledek neobsahuje duplicitní řádky. Toto je výchozí nastavení.

  • KROMĚ [VŠE | DISTINCT ]

    Vrátí řádky, které nejsou v subquery1subquery2.

    Pokud ALL je zadána hodnota , odebere každý řádek v subquery2 souboru přesně jednu z možných více shod z subquery1.

    Pokud DISTINCT je zadaný parametr , před použitím operace se odeberou duplicitní subquery1 řádky, takže se odeberou všechny shody a výsledek nebude obsahovat žádné duplicitní řádky (spárované nebo neodpovídající). Toto je výchozí nastavení.

    Jako alternativu EXCEPTsyntaxe můžete zadat MINUS .

Při zřetězování mají operace INTERSECT sady vyšší prioritu než UNION a EXCEPT.

Typ každého sloupce výsledků je nejméně společný typ příslušných sloupců v subquery1 a subquery2.

Příklady

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