Tabellen mit UNION, INTERSECT und EXCEPT kombinieren
Mit den SET-Standardoperationen UNION, INTERSECT und EXCEPT/MINUS können Sie die Ergebnisse von zwei oder mehr SELECT-Anweisungen kombinieren, um komplexere Abfragen zu erstellen.
Netezza Performance Server unterstützt drei Klassen von Mengenoperationen:
- UNION [DISTINCT] und UNION ALL
- INTERSECT [DISTINCT] und INTERSECT ALL
- EXCEPT [DISTINCT] oder MINUS [DISTINCT] und EXCEPT ALL, MINUS ALL
SQL-Anweisungen, die Gruppenoperatoren enthalten, werden als zusammengesetzte
Abfragen bezeichnet und jede SELECT-Anweisung in einer zusammengesetzten Abfrage
wird als Komponentenabfrage bezeichnet. Sie können zwei oder mehr
SELECT-Anweisungen in einer zusammengesetzten Abfrage kombinieren, wenn sie die folgenden
Bedingungen in Bezug auf die UNION-Kompatibilität erfüllen:
- Die Ergebnissets beider Abfragen müssen dieselbe Anzahl Spalten aufweisen.
- Die entsprechenden Spalten in den beiden Abfragen müssen denselben Datentyp haben
oder müssen implizit in denselben Datentyp konvertierbar sein.
Die erste Komponentenabfrage kann beispielsweise eine Spalte mit dem Datentyp CHAR enthalten und die entsprechende Spalte in der zweiten Komponentenabfrage kann eine VARCHAR-Spalte sein, und umgekehrt. Es ist jedoch nicht möglich, dass die erste Komponentenabfrage eine Spalte mit dem Typ DATE enthält und die entsprechende Spalte in der zweiten Komponente den Typ CHAR aufweist. Weitere Informationen zu Datentypkonvertierungen finden Sie unter Datentypförderung.
Eine Gruppenoperation hat die folgende Syntax:
<SELECT-statement>
{UNION | INTERSECT | EXCEPT | MINUS} [ALL | DISTINCT]
<SELECT-statement>
{UNION | INTERSECT | EXCEPT | MINUS} [ALL | DISTINCT]
<SELECT-statement>]*
[ORDER BY …]
[LIMIT …]
Für Gruppenoperationen gelten die folgenden Einschränkungen:
- Wenn die Namen der entsprechenden Spalten übereinstimmen, verwendet SQL den betreffenden Spaltennamen im Ergebnis. Wenn sich die entsprechenden Spaltennamen unterscheiden, verwendet SQL den Spaltennamen aus der ersten Abfrage in der Gruppenanweisung. Wenn Sie eine Spalte im Ergebnis umbenennen wollen, müssen Sie in der ersten Abfrage eine AS-Klausel verwenden.
- Sie können eine optionale ORDER BY-Klausel nur in der letzten Abfrage in der Gruppenanweisung angeben. SQL wendet die Sortierung auf das endgültige kombinierte Ergebnis an.
- Sie können optional eine LIMIT-Klausel nach der ORDER BY-Klausel angeben. SQL wendet das Limit auf das endgültige kombinierte Ergebnis an.
- Sie können GROUP BY- und HAVING-Klauseln nur in Einzelabfragen angeben. Ihre Verwendung hat keine Auswirkungen auf das Ergebnis.