Kurs
Der SQL-Operator IN ist ein praktisches Werkzeug, um Daten anhand einer Werteliste zu filtern. Gerade in längeren Abfragen vereinfacht der IN-Operator komplexe Bedingungen und verbessert die Lesbarkeit.
Wenn du in den Datenbereich einsteigen willst, empfehle ich dir die Kurse Introduction to SQL und SQL Fundamentals von DataCamp, um die Grundlagen der SQL-Filterung zu lernen. Für einen schnellen Überblick wirf einen Blick auf unser SQL Basics Cheat Sheet.
Was ist der SQL-IN-Operator?
Der SQL-Operator IN ist ein leistungsfähiges Mittel, um Ergebnisse in SQL-Abfragen zu verfeinern. Er gibt nur die Zeilen zurück, die die angegebenen Bedingungen erfüllen.
Der IN-Operator steht nach der WHERE-Klausel, um Ergebnisse anhand mehrerer Bedingungen zu filtern. Du nutzt ihn überall dort, wo eine Spalte mehrere unterschiedliche Werte haben kann.
-- Select the employee ID, employee name, and department columns
SELECT employee_id, employee_name, department
FROM employees
-- Filter the results to include only employees whose department is 'Sales' and 'HR'
WHERE department IN ('Sales', 'HR');
Im obigen Beispiel wählen wir die Spalten employee_id, employee_name und department aus der Tabelle employees aus. Zurückgegeben werden jedoch nur die Zeilen, in denen die Mitarbeitenden aus Sales und HR stammen.
Der IN-Operator kann verschiedene SQL-Datentypen filtern, darunter Strings, Zahlen und Datumswerte. Achte beim Filtern immer darauf, dass die Referenzspalte den passenden Datentyp hat.
Syntax des SQL-IN-Operators
Der IN-Operator hat eine einfache Syntax zum Filtern von Werten. Er wird in der WHERE-Klausel verwendet, um mehrere Werte aus einer Spalte zu filtern. Die allgemeine Syntax sieht so aus:
-- Select the columns you want to retrieve
SELECT column_name(s)
-- Specify the table from which to retrieve the data
FROM table_name
-- Filter the results to include only those rows where the column's value matches any value in the specified list
WHERE column_name IN (value1, value2, ...);
Hier ein praktisches Beispiel dafür, wie der IN-Operator in der WHERE-Klausel verwendet wird.
-- Select the employee ID, employee name, and department columns
SELECT employee_id, employee_name, department
FROM employees
-- Filter the results to include only employees whose department is 'Sales' and 'HR'
WHERE department IN ('Sales', 'HR');
Wichtige Punkte
Der IN-Operator steht in der WHERE-Klausel der SELECT-Anweisung. So kann die Abfrage Zeilen anhand mehrerer Werte filtern. Richtig eingesetzt vereinfacht der IN-Operator komplexe Abfragen und macht sie leichter lesbar.
Der IN-Operator ist in gängigen Datenbanken verfügbar, darunter SQL Server, PostgreSQL, MySQL und Oracle. Es ist gängige Praxis, Schlüsselwörter wie IN in Großbuchstaben zu schreiben, um die Lesbarkeit zu erhöhen.
Häufige Anwendungsfälle des IN-Operators
Der SQL-Operator IN kommt in vielen Analyse-Szenarien zum Einsatz. In diesem Abschnitt schauen wir uns typische Use Cases an, etwa das Filtern von Daten, den Umgang mit mehreren Werten und die Nutzung in Unterabfragen.
Daten filtern
Der IN-Operator filtert Datensätze und gibt eine definierte Wertemenge zurück. Die folgende Abfrage wählt beispielsweise alle Spalten aus der Tabelle employees und gibt nur Zeilen für die Bereiche Sales, HR und IT zurück.
-- Select all columns from employees table
SELECT employee_id, employee_name, department
FROM employees
-- Filter to include only 'Sales', 'HR', and 'IT' departments
WHERE department IN ('Sales', 'HR', 'IT');
Mit mehreren Werten umgehen
Mit dem IN-Operator lassen sich Datensätze auch über mehrere Werte hinweg filtern. Das ist besonders hilfreich, wenn du sonst viele OR-Bedingungen schreiben müsstest. IN sorgt hier für kürzeren, besser lesbaren Code.
So würde die Abfrage mit dem OR-Operator statt IN aussehen:
-- Main query to select employee_id and name from the employees table
SELECT employee_id, name
FROM employees
-- Filter employees based on multiple department names using OR conditions
WHERE department = 'Sales'
OR department = 'Marketing'
OR department = 'HR';
Und so sieht sie mit dem IN-Operator aus. Beachte, wie die Wiederholungen von OR entfallen und die Abfrage schlanker wird.
-- Main query to select employee_id and name from the employees table
SELECT employee_id, name
FROM employees
-- Filter employees based on a list of department names using the IN operator
WHERE department IN ('Sales', 'Marketing', 'HR');
Unterabfragen (Subqueries)
Du kannst den IN-Operator auch innerhalb einer Unterabfrage nutzen. So filterst du Ergebnisse anhand einer anderen Abfrage oder verknüpfter Daten. Im folgenden Beispiel wählt die Unterabfrage die department_id des Bereichs Sales aus der Tabelle departments. Die Hauptabfrage gibt dann die Zeilen mit employee_id und Name aus der Tabelle employees zurück, gefiltert nach dem Ergebnis der Unterabfrage.
-- Main query to select employee_id and name from the employees table
SELECT employee_id, name
FROM employees
-- Filter employees based on department_id using a subquery
WHERE department_id IN (
-- Subquery to get department_id for the "Sales" department
SELECT department_id
FROM departments
WHERE department_name = 'Sales'
);
Einschränkungen und Alternativen
So einfach der IN-Operator zu verwenden ist, hat er auch Grenzen. Dazu zählen unter anderem:
- Performance bei langen Listen: Sehr große Wertelisten im
IN-Operator können die Ausführung verlangsamen. - Umgang mit NULL-Werten:
INbehandeltNULLnicht effizient und kann unerwartete Ergebnisse liefern, daNULL-Werte nicht in der Liste enthalten sind. - Begrenzte Flexibilität: Bei großen Datensätzen über mehrere Spalten stößt
INan Grenzen. Meist lassen sich nur ausgewählte Spalten über Unterabfragen filtern.
Um diese Einschränkungen zu umgehen, bieten sich folgende Alternativen an:
Mit EXISTS arbeiten
Der Operator EXISTS prüft, ob bestimmte Datensätze in einer Unterabfrage vorhanden sind. Richtig eingesetzt ist er oft effizienter und schneller.
-- Select employee ID and name for employees in departments located in New York using EXISTS
SELECT employee_id, employee_name
FROM employees e
-- Check if there exists a row in the departments table
WHERE EXISTS (
-- Select 1 is used here as a placeholder; it simply checks for existence
SELECT 1
FROM departments d
-- Match the department_id in employees with department_id in departments
WHERE d.department_id = e.department_id
-- Filter for departments located in New York
AND d.location = 'New York'
);
JOIN verwenden
Die SQL-JOIN-Klausel ist bei komplexeren Filtern effizient und eignet sich, wenn du Daten über mehrere verknüpfte Spalten hinweg filterst. Im Beispiel unten verbindet die JOIN-Klausel die Tabellen employees und departments über department_id, um Mitarbeitende zu filtern, die in New York arbeiten.
-- Select employee ID and name for employees in departments located in New York using JOIN
SELECT e.employee_id, e.employee_name
FROM employees e
-- Join the employees table with the departments table on department_id
JOIN departments d ON e.department_id = d.department_id
-- Filter the results to include only departments located in New York
WHERE d.location = 'New York';
Common Table Expressions (CTEs) oder temporäre Tabellen
Wenn du mit sehr langen Listen arbeitest, speichere sie vorab in einer CTE. Das verbessert Performance und Lesbarkeit.
-- Define a CTE (Common Table Expression) to store the list of department IDs located in New York
WITH DepartmentList AS (
SELECT department_id
FROM departments
WHERE location = 'New York'
)
-- Select employee ID and name for employees who belong to the departments listed in the CTE
SELECT e.employee_id, e.employee_name
FROM employees e
-- Filter the results to include only employees whose department_id is in the list of department IDs from the CTE
WHERE e.department_id IN (SELECT department_id FROM DepartmentList);
Wenn du weitere fortgeschrittene Filtertechniken lernen möchtest, empfehle ich den DataCamp-Lernpfad Associate Data Analyst in SQL. Außerdem lohnt sich der Kurs Intermediate SQL Server mit einem Kapitel zu Common Table Expressions und weiteren Advanced-Themen.
Fazit
Den SQL-Operator IN zu verstehen, ist für Datenprofis wichtig, weil du damit Daten während der Analyse zielgerichtet filtern und transformieren kannst. Um deine SQL-Kompetenz beim Einsatz von IN zu stärken, übe am besten mit verschiedenen Datensätzen.
Wenn du dein SQL-Wissen auf das nächste Level bringen willst, empfehle ich den Kurs Reporting in SQL für weitere komplexe Abfragetechniken. Zudem hilft dir die SQL Associate Certification, dich von anderen Datenanalystinnen und -analysten abzuheben und deine Praxisstärke in fortgeschrittener SQL-Analyse zu zeigen.
Häufig gestellte Fragen
Kann ich mit dem IN-Operator nach unterschiedlichen Datentypen filtern?
Der Operator IN filtert unterschiedliche SQL-Datentypen, darunter Strings, Zahlen und Datumswerte.
Kann man den IN-Operator in Unterabfragen verwenden?
Der IN-Operator wird in Unterabfragen als fortgeschrittene Methode verwendet, um die Ergebnisse der Hauptabfrage zu filtern.
Was ist die Alternative zum IN-Operator?
Die besten Alternativen zum IN-Operator sind der Operator EXISTS, die JOIN-Klausel und Common Table Expressions (CTEs).
Welche Datenbanken sind mit dem IN-Operator kompatibel?
Gängige Datenbanken unterstützen den IN-Operator, darunter SQL Server, MySQL, PostgreSQL und Oracle.
