| PostgreSQL: Das Offizielle Handbuch | ||||
|---|---|---|---|---|
| Zurück | Schnell zurück | Kapitel 7. Anfragen | Schnell nach vorne | Nach vorne |
Die Ergebnisse zweier Anfragen können mit Mengenoperationen vereinigt werden. Die möglichen Operationen sind Vereinigungsmenge (englisch union), Schnittmenge (intersection) und Differenzmenge. Die Syntax ist
anfrage1 UNION [ALL] anfrage2 anfrage1 INTERSECT [ALL] anfrage2 anfrage1 EXCEPT [ALL] anfrage2
anfrage1 und anfrage2 sind Anfragen, die von jeder der bisher beschriebenen Fähigkeiten Gebrauch machen können. Mengenoperationen können auch verschachtelt und verkettet werden, wie zum Beispiel:
anfrage1 UNION anfrage2 UNION anfrage3
Das bedeutet das gleiche wie:
(anfrage1 UNION anfrage2) UNION anfrage3
UNION, die Vereinigungsmengenoperation, hängt das Ergebnis von anfrage2 im Prinzip an das Ergebnis von anfrage1 an (obwohl es keine Gewähr dafür gibt, dass die Zeilen auch in dieser Reihenfolge zurückgegeben werden). Darüber hinaus werden alle doppelten Zeilen, im Sinne von DISTINCT, entfernt, außer wenn UNION ALL verwendet wird.
INTERSECT, die Schnittmengenoperation, ermittelt alle Zeilen, die sowohl im Ergebnis von anfrage1 als auch im Ergebnis von anfrage2 sind. Doppelte Zeilen werden entfernt, außer wenn INTERSECT ALL verwendet wird.
EXCEPT, die Differenzmengenoperation, ermittelt alle Zeilen, die im Ergebnis von anfrage1 aber nicht im Ergebnis von anfrage2 sind. Doppelte Zeilen werden wiederum entfernt, außer wenn EXCEPT ALL verwendet wird.
Um die Vereinigungsmenge, Schnittmenge oder Differenzmenge zweier Anfrage berechnen zu können, müssen die Anfragen vereinigungskompatibel (englisch union compatible) sein, was heißt, dass beide die gleiche Anzahl von Spalten ergeben und dass die entsprechenden Spalten kompatible Datentypen haben, wie in Abschnitt 10.5 erklärt.
| Zurück | Zum Anfang | Nach vorne |
| Select-Listen | Nach oben | Zeilen sortieren |