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:
-- 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:
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:
SELECT name
FROM departments
WHERE city IN ('Milano', 'Roma');Es gibt auch NOT IN (...), der das Gegenteil bewirkt:
-- 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:
-- 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:
-- 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
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.
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
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.
Hinweis anzeigen
WHERE Department_id IN (1, 2, 4) ist die kompakte Version von drei ORs.
Lösung nach 3 Versuchen verfügbar