Operátorok beállítása

A következőre vonatkozik:yes Databricks SQL check marked yes Databricks Runtime

Két albekérdezőt egyesít egyetlen egybe. A Databricks SQL háromféle halmaz-operátort támogat:

  • EXCEPT
  • INTERSECT
  • UNION

Szintaxis

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

    A SELECT mezőben megadott két subquery záradék. Mindkét albekérdezésnek azonos számú oszlopmal kell rendelkeznie, és az egyes oszlopokhoz a legkevésbé gyakori típusnak kell tartoznia.

  • UNION [ALL | DISTINCT]

    A subquery2' eredményét adja eredményül subquery1 plus the rows of .

    Ha ALL a megadott ismétlődő sorok megmaradnak.

    Ha DISTINCT meg van adva, az eredmény nem tartalmaz ismétlődő sorokat. Ez az alapértelmezett érték.

  • INTERSECT [ALL | DISTINCT]

    A két albekérdezés sorkészletét adja eredményül.

    Ha ALL meg van adva egy olyan sor, amely többször jelenik meg a és a subquery1 fájlban subquery is, a rendszer többször is visszaadja.

    Ha DISTINCT meg van adva, az eredmény nem tartalmaz ismétlődő sorokat. Ez az alapértelmezett érték.

  • KIVÉVE : [MIND | DISTINCT ]

    Azokat a sorokat adja vissza, amelyekben subquery1 nincsenek a fájlban subquery2.

    Ha ALL meg van adva, a benne lévő subquery2 összes sor pontosan egy vagy több egyezést távolít el a fájlból subquery1.

    Ha DISTINCT meg van adva, a művelet alkalmazása előtt a rendszer eltávolítja subquery1 az ismétlődő sorokat, így az összes egyezés el lesz távolítva, és az eredményben nem lesznek ismétlődő sorok (egyezések vagy nem egyezők). Ez az alapértelmezett érték.

    A szintaxis alternatívaként megadható MINUS a következőhöz: EXCEPT.

Ha a láncolókészlet-műveletek INTERSECT nagyobb prioritást élveznek, mint UNION a és EXCEPTa.

Az egyes eredményoszlopok típusa a és subquery2a megfelelő oszlopok subquery1 legkisebb közös típusa.

Példák

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