In der WHERE-Klausel geben Sie eine Suchbedingung an, um Sätze für die Ergebnistabelle auszuwählen. Die Ergebnistabelle enthält nur die Sätze, die die angegebene Bedingung erfüllen (d.h. die Suchbedingung ist wahr). Sätze, für die die Suchbedingung falsch oder unbestimmt ergibt, werden nicht in die Ergebnistabelle aufgenommen.
SELECT ...
WHERE
suchbedingung
suchbedingung
Bedingung, die die auszuwählenden Sätze erfüllen müssen.
Beispiele
Die Prädikate sind ausführlich im Kapitel „Zusammengesetzte Sprachelemente" beschrieben. Hier sind wesentliche Arten von Suchbedingungen an Hand von einfachen Beispielen zusammengestellt.
Vergleich mit Konstante: =, <, <=, >, >=, <>
SELECT knr, firma FROM kunde WHERE plz = 81739
Vergleich mit Zeichenketten-Muster: [NOT] LIKE
SELECT * FROM kunde WHERE firma LIKE 'Sie%'
Bereichsabfrage: [NOT] BETWEEN
SELECT knr, firma FROM kunde WHERE plz BETWEEN 80000 AND 89999
Vergleich auf NULL-Wert: IS [NOT] NULL
SELECT lnr, anr, ltext FROM leistung WHERE rnr IS NULL
Vergleich auf mehrere Werte: [NOT] IN
SELECT knr, firma FROM kunde WHERE plz IN (81739, 80469)
Innere SELECT-Anweisung: [NOT] EXISTS
SELECT firma FROM kunde
WHERE NOT EXISTS (SELECT * FROM auftrag WHERE kunde.knr = auftrag.knr)
Unterabfrage (siehe Abschnitt „Unterabfrage"):
Unterabfrage, die eine Ergebnisspalte liefert: ALL, ANY, SOME, [NOT] IN
SELECT firma FROM kunde WHERE kunde.knr =
SOME (SELECT knr FROM auftrag WHERE adatum = DATE '<date>')
Korrelierte Unterabfrage:
Für jeden Auftrag die Leistung heraussuchen, die mindestens doppelt so groß ist wie die Durchschnittsleistung für diesen Auftrag:
SELECT l1.lnr, l1.anr, l1.ltext FROM leistung l1 WHERE l1.lanz * l1.lsatz > 2 * (SELECT AVG(l2.lanz * l2.lsatz) FROM leistung l2 WHERE l2.anr = l1.anr)
Bedingung: AND, OR, NOT
SELECT lnr, anr, ldatum, ltext FROM leistung
WHERE ltext = 'Schulung' AND ldatum >= DATE '<date>'