Ange operatorer
Gäller för: Databricks SQL 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 } [...]
-
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 isubquery2
.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 isubquery1
och isubquery
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 isubquery2
.Om
ALL
anges tar varje rad isubquery2
bort exakt en av eventuellt flera matchningar frånsubquery1
.Om
DISTINCT
anges tas dubblettrader bort frånsubquery1
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örEXCEPT
.
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