Ange operatorer
Gäller för: Databricks 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 isubquery1
och isubquery
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 isubquery2
.Om
ALL
anges tar varje rad isubquery2
bort exakt en av möjligen 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). Detta är standardinställningen.Du kan ange
MINUS
som ett syntaxalternativ förEXCEPT
.
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