Dela via


Ange operatorer

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

Kombinerar föregående subquery1 och subquery2 till en enda. Azure Databricks har stöd för tre typer av uppsättningsoperatorer:

  • EXCEPT
  • INTERSECT
  • UNION

Syntax

{ UNION | INTRECEPT | EXCEPT } [ ALL | DISTINCT ] subquery2 } [...]
  • subquery2

    Vilka som helst två subquery-satser som anges i SELECT (underval). Båda underfrågorna måste ha samma antal kolumner och dela en minst vanlig typ för varje kolumn.

  • UNION [ALL | DISTINCT]

    Returnerar resultatet av subquery1 plus raderna i subquery2.

    Om ALL anges bevaras dubblettrader.

    Om DISTINCT anges innehåller resultatet inga dubbletter av rader. Det här är standardinställningen.

  • INTERSECT [ALLA | DISTINCT]

    Returnerar uppsättningen 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 dubbletter av rader. Det här ä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 eventuellt 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). Det här är standardinställningen.

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

När man kedjar setoperationer har INTERSECT högre prioritet än UNION och EXCEPT.

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

Om resultatkolumnen är en STRING härleds dess sortering genom att tillämpa sorteringsprioritetsregler på kolumnerna i underfrågorna.

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