Direkt zum Hauptinhalt springen
eLearner.app
Modul 4 · Lektion 1 von 413/57 im Kurs~8 min
Lektionen des Moduls (1/4)

Listen und Bereiche: IN und BETWEEN

In den vorherigen Modulen haben Sie mit WHERE unter Verwendung von Gleichheiten und gefiltert Vergleiche: salary > 30000, department_id = 1, hired_on >= '2020-01-01'. Aber wenn die Bedingung lautet: „Der Wert muss einer dieser fünf sein“_, verkettete ORs stapeln sich:

SQL
-- Heavy and fragile: adding a department means touching the query
SELECT first_name, last_name
FROM   employees
WHERE  department_id = 1
   OR  department_id = 2
   OR  department_id = 3;

SQL bietet zwei Verknüpfungen, um dies lesbar zu machen.

IN – „eines davon“

Der IN (...)-Operator nimmt eine Liste von Werten und gibt true zurück, wenn der Spalte entspricht jedem davon:

SQL
SELECT first_name, last_name, department_id
FROM   employees
WHERE  department_id IN (1, 2, 3);

Es ist semantisch identisch mit den oben genannten ORs, aber weitaus besser lesbar: it liest sich natürlich als "wo department_id in (1, 2, 3) ist". Es funktioniert auch mit Zeichenfolgen und Datumsangaben:

SQL
SELECT name
FROM   departments
WHERE  city IN ('Milano', 'Roma');

Es gibt auch NOT IN (...), der das Gegenteil bewirkt:

SQL
-- Employees who are NOT in Engineering or Sales:
SELECT first_name, last_name
FROM   employees
WHERE  department_id NOT IN (1, 2);

BETWEEN – „zwischen A und B, beide inklusive“

Wenn die Bedingung ein fortlaufender Bereich (Zahlen, Datumsangaben) ist, statt Wenn Sie column >= A AND column <= B schreiben, haben Sie BETWEEN A AND B:

SQL
-- Employees with a salary between 30000 and 50000 (both inclusive):
SELECT first_name, last_name, salary
FROM   employees
WHERE  salary BETWEEN 30000 AND 50000;

BETWEEN ist auf beiden Endpunkten inklusive. Es funktioniert sehr gut mit Termine auch:

SQL
-- Everyone hired in 2020:
SELECT first_name, last_name, hired_on
FROM   employees
WHERE  hired_on BETWEEN '2020-01-01' AND '2020-12-31';

Probieren Sie es aus

Übung#sql.m4.l1.e1
Versuche: 0Wird geladen…

Zeigen Sie Vornamen (first_name), Nachnamen (last_name) und Gehalt (salary) von Mitarbeitern mit einem Gehalt zwischen 30.000 und 50.000 inklusive an. Drei Spalten.

Editor wird geladen…
Hinweis anzeigen

Verwenden Sie ZWISCHEN 30.000 UND 50.000 – kompakter und lesbarer als zwei durch UND verbundene Vergleiche.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#sql.m4.l1.e2
Versuche: 0Wird geladen…

Listen Sie den Vornamen (first_name) und den Nachnamen (last_name) der Mitarbeiter auf, die in den Abteilungen 1, 2 oder 4 arbeiten (verwenden Sie IN). Sortieren Sie alphabetisch nach Nachnamen.

Editor wird geladen…
Hinweis anzeigen

WHERE Department_id IN (1, 2, 4) ist die kompakte Version von drei ORs.

Lösung nach 3 Versuchen verfügbar