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 vorkommen

  • INTERSECT - Gibt nur die Zeilen zurück, die in beiden Abfragen vorkommen

  • UNION - 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 } [...] }
Copy
[ ( ] <query> [ ) ] { INTERSECT | { MINUS | EXCEPT } | UNION [ ALL ] } [ ( ] <query> [ ) ]
[ ORDER BY ... ]
[ LIMIT ... ]
Copy

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);
Copy

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);
Copy

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);
Copy

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);
Copy

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