Ange operatorer

Gäller för:check markerad ja Databricks SQL-kontroll markerad ja Databricks Runtime

Kombinerar två underfrågor till en enda. Databricks SQL stöder tre typer av uppsättningsoperatorer:

  • EXCEPT
  • INTERSECT
  • UNION

Syntax

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

    subquery Två satser som anges i SELECT. Båda underfrågorna måste ha samma antal kolumner och dela en minst vanlig typ för varje kolumn.

  • UNION [ALLA | DISTINCT]

    Returnerar resultatet av subquery1 plus the rows of underfrågan2'.

    Om ALL anges bevaras dubblettrader.

    Om DISTINCT anges innehåller resultatet inte några dubblettrader. Detta är standardinställningen.

  • INTERSECT [ALL | DISTINCT]

    Returnerar den uppsättning rader som finns i båda underfrågorna.

    Om ALL anges returneras en rad som visas flera gånger i subquery1 och i subquery flera gånger.

    Om DISTINCT anges innehåller resultatet inte dubblettrader. Detta är standardinställningen.

  • UTOM [ALLA | DISTINCT ]

    Returnerar de rader subquery1 som inte finns i subquery2.

    Om ALL anges tar varje rad i subquery2 bort exakt en av möjligen flera matchningar från subquery1.

    Om DISTINCT anges tas dubblettrader bort från subquery1 innan åtgärden tillämpas, så alla matchningar tas bort och resultatet har inga duplicerade rader (matchade eller omatchade). Detta är standardinställningen.

    Du kan ange MINUS som ett syntaxalternativ för EXCEPT.

När kedjekopplingsuppsättningsåtgärder INTERSECT har högre prioritet än UNION och EXCEPT.

Typen för varje resultatkolumn är den minst vanliga typen av respektive kolumner i subquery1 och subquery2.

Exempel

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