abfrageausdruck ::= {
select_ausdruck | TABLE
tabelle |
join_ausdruck | (
abfrageausdruck ) }
[EXCEPT [DISTINCT]
abfrageausdruck ]
select_ausdruck
SELECT-Ausdruck, siehe Abschnitt „SELECT-Ausdruck".
TABLE tabelle
Tabellenabfrage, siehe Abschnitt „TABLE - Tabellenabfrage".
join_ausdruck
Join-Ausdruck, siehe Abschnitt „Join-Ausdruck".
(abfrageausdruck)
Unterabfrage, siehe Abschnitt „Unterabfrage".
EXCEPT
Die EXCEPT-Operation ist vergleichbar mit der Differenz zweier Mengen in der Mengenlehre. Die Ergebnistabelle enthält alle Sätze der ersten Tabelle, die nicht in der zweiten Tabelle vorkommen.
Für die Verknüpfung von Abfrage-Ausdrücken mittels EXCEPT müssen folgende Bedingungen erfüllt sein:
Die Ergebnistabellen der beiden EXCEPT-Operanden müssen dieselbe Anzahl von Spalten haben.
Die Datentypen entsprechender Spalten müssen verträglich sein (siehe Abschnitt „Verträglichkeit von Datentypen").
Der Datentyp einer Ergebnisspalte ergibt sich aus den Regeln, die im Abschnitt „Datentyp der Ergebnisspalten bei EXCEPT" beschrieben sind.
DISTINCT
Doppelte Sätze werden aus der Resultattabelle entfernt. Erfolgt keine Angabe, ist DISTINCT voreingestellt.
Datentyp der Ergebnisspalten bei EXCEPT
Bei der Verknüpfung von zwei Abfrage-Ausdrücken mit EXCEPT ist der Datentyp der Ergebnisspalten ebenso wie bei UNION durch folgende Regeln festgelegt.
Beide Ausgangsspalten haben den Datentyp CHAR:
Ergebnisspalte hat Datentyp CHAR mit der größeren Länge.Eine Ausgangsspalte hat Datentyp VARCHAR und die andere Ausgangsspalte CHAR oder VARCHAR:
Die Ergebnisspalte hat Datentyp VARCHAR mit der größeren bzw. größeren maximalen Länge.Beide Ausgangsspalten haben den Datentyp NCHAR:
Ergebnisspalte hat Datentyp NCHAR mit der größeren Länge.Eine Ausgangsspalte hat Datentyp NVARCHAR und die andere Ausgangsspalte NCHAR oder NVARCHAR:
Die Ergebnisspalte hat Datentyp NVARCHAR mit der größeren bzw. größeren maximalen Länge.Beide Ausgangsspalten haben ganzzahligen Typ oder Festpunktzahl-Typ (INT, SMALLINT, NUMERIC, DEC):
Die Ergebnisspalte hat den Datentyp Ganz- oder Festpunktzahl.Die Nachkommastellenzahl ist die größere der beiden Nachkommastellenzahlen der Ausgangsspalten.
Die Gesamtstellenzahl ist die größere der beiden Vorkommastellenzahlen plus die größere der beiden Nachkommastellenzahlen der beiden Ausgangsspalten, höchstens jedoch 31.
Eine Ausgangsspalte hat Gleitpunktzahl-Typ (REAL, DOUBLE, FLOAT), die andere hat einen beliebigen numerischen Datentyp:
Die Ergebnisspalte hat den Datentyp DOUBLE PRECISION.Beide Ausgangsspalten haben Zeitdatentyp:
Beide Spalten müssen denselben Zeitdatentyp haben und die Ergebnisspalte hat auch diesen Datentyp.
Beispiel
Alle Kundennummern ermitteln, für die keine geplanten oder vertraglich vereinbarten Aufträge existieren.
SELECT knr FROM kunde EXCEPT DISTINCT SELECT knr FROM auftrag WHERE astnr < 3