Snowpark Migration Accelerator: Vereinigung¶
Beschreibung¶
Führt zwei Unterabfragen zu einer einzigen Abfrage zusammen. Databricks SQL bietet drei Mengenoperatoren, mit denen Sie Abfragen kombinieren können:
EXCEPT
- Ruft alle Zeilen aus der ersten Abfrage ab, die in der zweiten Abfrage nicht vorkommenINTERSECT
- Gibt nur die Zeilen zurück, die in beiden Abfragen vorkommenUNION
- Kombiniert die Ergebnisse von zwei oder mehr Abfragen in einem einzigen Resultset
Databricks SQL-Sprachreferenz UNION
Mit Mengenoperatoren können Sie mehrere Abfragen zu einem einzigen Ergebnis kombinieren. Weitere Einzelheiten finden Sie unter Snowflake SQL-Sprachreferenz UNION.
Syntax¶
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
[ ( ] <query> [ ) ] { INTERSECT | { MINUS | EXCEPT } | UNION [ ALL ] } [ ( ] <query> [ ) ]
[ ORDER BY ... ]
[ LIMIT ... ]
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Databricks¶
CREATE TEMPORARY VIEW number1(c) AS VALUES (3), (1), (2), (2), (3), (4);
CREATE TEMPORARY VIEW number2(c) AS VALUES (5), (1), (1), (2);
Snowflake¶
CREATE TEMPORARY TABLE number1(c int);
INSERT INTO number1 VALUES (3), (1), (2), (2), (3), (4);
CREATE TEMPORARY TABLE number2(c int);
INSERT INTO number2 VALUES (5), (1), (1), (2);
Muster-Code¶
Databricks¶
-- EXCEPT (MINUS) Operator:
SELECT c FROM number1 EXCEPT SELECT c FROM number2;
SELECT c FROM number1 MINUS SELECT c FROM number2;
-- EXCEPT ALL (MINUS ALL) Operator:
SELECT c FROM number1 EXCEPT ALL (SELECT c FROM number2);
SELECT c FROM number1 MINUS ALL (SELECT c FROM number2);
-- INTERSECT Operator:
(SELECT c FROM number1) INTERSECT (SELECT c FROM number2);
-- INTERSECT DISTINCT Operator:
(SELECT c FROM number1) INTERSECT DISTINCT (SELECT c FROM number2);
-- INTERSECT ALL Operator:
(SELECT c FROM number1) INTERSECT ALL (SELECT c FROM number2);
-- UNION Operator:
(SELECT c FROM number1) UNION (SELECT c FROM number2);
-- UNION DISTINCT Operator:
(SELECT c FROM number1) UNION DISTINCT (SELECT c FROM number2);
-- UNION ALL Operator:
SELECT c FROM number1 UNION ALL (SELECT c FROM number2);
EXCEPT (MINUS)-Operator: Der EXCEPT-Operator, auch bekannt als MINUS, entfernt Zeilen aus der ersten Abfrage, die im Resultset der zweiten Abfrage erscheinen. Sie gibt nur eindeutige Zeilen aus der ersten Abfrage zurück, die in der zweiten Abfrage nicht vorhanden sind.
c |
---|
3 |
4 |
EXCEPT ALL (MINUS ALL)-Operator: Entfernt doppelte Datensätze
c |
---|
3 |
3 |
4 |
INTERSECT-Operator: Gibt nur die Zeilen zurück, die in beiden Resultsets vorkommen, wobei Duplikate eliminiert werden. Es vergleicht die Ergebnisse von zwei oder mehr SELECT-Anweisungen und gibt nur die übereinstimmenden Datensätze zurück. Gibt nur die Zeilen zurück, die in beiden Resultsets vorkommen, wobei Duplikate ausgeschlossen werden.
c |
---|
1 |
2 |
INTERSECT DISTINCT-Operator: Gibt nur eindeutige Zeilen zurück, die in beiden Resultsets vorkommen, und eliminiert alle Duplikate. Gibt nur eindeutige Zeilen zurück, die in beiden Abfragen vorkommen, und eliminiert alle Duplikate aus dem Resultset.
c |
---|
1 |
2 |
INTERSECT ALL-Operator: Liefert alle übereinstimmenden Zeilen aus mehreren Abfragen, einschließlich Duplikaten. Im Gegensatz zum INTERSECT-Standardoperator, der Duplikate entfernt, bleiben bei INTERSECT ALL doppelte Zeilen im Resultset erhalten. Gibt alle Zeilen zurück, die in beiden Resultsets vorkommen, einschließlich der Duplikate. Im Gegensatz zu INTERSECT, das Duplikate entfernt, bewahrt INTERSECT ALL doppelte Zeilen auf der Grundlage ihrer Häufigkeit in beiden Mengen.
c |
---|
1 |
2 |
2 |
UNION-Operator: Der UNION-Operator kombiniert die Ergebnisse von zwei oder mehr SELECT-Anweisungen zu einem Resultset. Es entfernt standardmäßig doppelte Zeilen aus dem kombinierten Resultset. Der UNION-Operator kombiniert die Ergebnisse von zwei oder mehr SELECT-Anweisungen zu einem Resultset. Es entfernt doppelte Zeilen aus den kombinierten Ergebnissen.
c |
---|
1 |
3 |
5 |
4 |
2 |
UNION DISTINCT-Operator: Der UNION DISTINCT-Operator kombiniert zwei oder mehr Resultsets und entfernt alle doppelten Zeilen aus der endgültigen Ausgabe. Sie gibt nur eindeutige Zeilen aus allen kombinierten Abfragen zurück. Der UNION DISTINCT-Operator kombiniert Zeilen aus zwei oder mehr Abfragen und entfernt dabei alle doppelten Zeilen aus dem endgültigen Resultset.
c |
---|
1 |
3 |
5 |
4 |
2 |
UNION ALL-Operator: Der UNION ALL-Operator kombiniert Zeilen aus zwei oder mehr Abfragen, ohne doppelte Datensätze zu entfernen. Im Gegensatz zum UNION-Operator behält UNION ALL alle Zeilen bei, einschließlich der Duplikate, was die Ausführung beschleunigt, da keine Duplikatsprüfung durchgeführt werden muss. Dieser Operator kombiniert die Ergebnisse von zwei oder mehr SELECT-Anweisungen und schließt alle Zeilen ein, einschließlich der Duplikate. Im Gegensatz zu UNION, das doppelte Zeilen entfernt, behält UNION ALL alle Zeilen aus allen SELECT-Anweisungen bei.
c |
---|
3 |
1 |
2 |
2 |
3 |
4 |
5 |
1 |
1 |
2 |
Snowflake¶
-- EXCEPT (MINUS) Operator
SELECT c FROM number1 EXCEPT SELECT c FROM number2;
SELECT c FROM number1 MINUS SELECT c FROM number2;
-- EXCEPT ALL (MINUS ALL) Operator:
SELECT number1.c FROM number1
LEFT JOIN number2
ON number1.c = number2.c
WHERE number2.c IS NULL;
-- ** MSC-WARMING - MSC-S000# - EXCEPT ALL IS TRANSFORMED TO A LEFT JOIN. **
SELECT number1.c FROM number1
LEFT JOIN number2
ON number1.c = number2.c
WHERE number2.c IS NULL;
-- ** MSC-WARMING - MSC-S000# - MINUS ALL IS TRANSFORMED TO A LEFT JOIN. **
-- INTERSECT Operator:
(SELECT c FROM number1) INTERSECT (SELECT c FROM number2);
-- INTERSECT DISTINCT Operator:
(SELECT c FROM number1) INTERSECT (SELECT c FROM number2);
-- INTERSECT ALL Operator:
SELECT DISTINCT number1.c FROM number1
INNER JOIN number2
ON number1.c = number2.c;
-- ** MSC-WARMING - MSC-S000# - INTERSECT ALL IS TRANSFORMED TO A INNER JOIN. **
-- UNION Operator:
(SELECT c FROM number1) UNION (SELECT c FROM number2);
-- UNION DISTINCT Operator:
(SELECT c FROM number1) UNION DISTINCT (SELECT c FROM number2);
-- UNION ALL Operator:
SELECT c FROM number1 UNION ALL (SELECT c FROM number2);
EXCEPT (MINUS)-Operator: Entfernt doppelte Datensätze
Der EXCEPT-Operator, auch bekannt als MINUS, vergleicht zwei Abfragen und gibt nur die eindeutigen Datensätze aus der ersten Abfrage zurück, die in der zweiten Abfrage nicht vorkommen. Es eliminiert doppelte Zeilen aus dem Resultset.
c |
---|
3 |
4 |
EXCEPT ALL (MINUS ALL)-Operator: Entfernt doppelte Zeilen
c |
---|
3 |
3 |
4 |
INTERSECT-Operator:
c |
---|
1 |
2 |
INTERSECTDISTINCT-Operator:
c |
---|
1 |
2 |
INTERSECTALL-Operator:
c |
---|
1 |
2 |
2 |
UNION-Operator:
c |
---|
1 |
3 |
5 |
4 |
2 |
UNIONDISTINCT-Operator:
c |
---|
1 |
3 |
5 |
4 |
2 |
UNIONALL-Operator:
c |
---|
3 |
1 |
2 |
2 |
3 |
4 |
5 |
1 |
1 |
2 |
Bekannte Probleme¶
Nicht verwandt EWIs