Nastavit operátory

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného 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

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

  • UNION [ALL | DISTINCT]

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

    Pokud ALL jsou zadány duplicitní řádky jsou zachovány.

    Pokud DISTINCT je zadán výsledek neobsahuje žádné duplicitní řádky. Tato možnost je výchozí.

  • INTERSECT [ALL | DISTINCT]

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

    Pokud ALL je zadán řádek, který se zobrazí vícekrát v subquery1 i v subquery případě, že se vrátí vícekrát.

    Pokud DISTINCT je zadán výsledek neobsahuje duplicitní řádky. Tato možnost je výchozí.

  • KROMĚ [VŠE | DISTINCT ]

    Vrátí řádky, ve subquery1 kterých nejsou subquery2.

    Pokud ALL je zadán, každý řádek v subquery2 bude odebrán přesně jeden z možných více shod z subquery1.

    Pokud DISTINCT je zadáno, duplicitní řádky se před subquery1 použitím operace odeberou, takže všechny shody se odeberou a výsledek nebude obsahovat žádné duplicitní řádky (odpovídající nebo chybějící). Tato možnost je výchozí.

    Můžete zadat MINUS jako alternativu syntaxe pro EXCEPT.

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

Typ každého výsledného sloupce 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