Der SQL-Operator OR ist ein logischer Operator, der in Abfragen verwendet wird, um Daten anhand mehrerer Bedingungen zu filtern. Der OR-Operator kommt meist in der WHERE-Klausel zum Einsatz und liefert Ergebnisse, die die angegebenen Bedingungen erfüllen. Diese Fähigkeit macht den OR-Operator zu einem wichtigen Werkzeug für eine flexible Datenabfrage.
In diesem Tutorial zeige ich dir anhand praxisnaher Beispiele verschiedene Anwendungsfälle des OR-Operators in SQL-Abfragen. Wenn du angehende/r Datenanalyst/in bist oder mit SQL startest, empfehle ich dir den Kurs Introduction to SQL von DataCamp, um die SQL-Grundlagen zu lernen. Das SQL Basics Cheat Sheet hilft dir zudem, gängige Operatoren und Funktionen für das Abfragen, Filtern und Aggregieren von Daten nachzuschlagen.
Was ist der SQL-Operator OR?
Der SQL-Operator OR wird typischerweise mit der WHERE-Klausel verwendet, um Daten zu filtern. In einer Abfrage sorgt OR dafür, dass alle Zeilen einbezogen werden, bei denen mindestens eine der angegebenen Bedingungen wahr ist.
Die folgende Abfrage gibt alle Datensätze aus der Tabelle employees zurück, die entweder zur HR-Abteilung gehören oder ein Gehalt von über 60.000 $ haben. Erfüllt eine Zeile eine der beiden Bedingungen oder beide, wird sie im Ergebnis angezeigt.
-- Select rows where the department is either 'HR' OR salary greater than 60,000
SELECT *
FROM employees
WHERE department = 'HR'
OR salary > 60000;

Beispielausgabe einer Tabelle, gefiltert mit dem SQL-Operator OR. Bild: Autor/in.
Schau dir den Kurs Intermediate SQL auf DataCamp an, um mehr über den OR-Operator und weitere Operatoren für konditionales Filtern zu lernen.
Erhalte eine Top-SQL-Zertifizierung
Syntax des SQL-Operators OR
Der OR-Operator ist leicht anzuwenden und in SQL-Abfragen zu integrieren. Unten siehst du die Grundsyntax in einer SELECT-Anweisung.
SELECT column1, column2, ...
FROM table_name
WHERE condition1
OR condition2
OR condition3;
Beachte, dass du in der WHERE-Klausel mehr als eine OR-Bedingung verwenden kannst.
Grundlegende Verwendung in SELECT
Der OR-Operator wird in SELECT-Anweisungen verwendet, um Datensätze zurückzugeben, die eine der angegebenen Bedingungen erfüllen. Das ist hilfreich, wenn du Datensätze abrufen willst, ohne mehrere komplexe Abfragen zu schreiben.
Im Beispiel unten filtert der OR-Operator alle Mitarbeitenden, die in "New York" oder "Los Angeles" tätig sind.
-- Select employeees from New York or Los Angeles city
SELECT first_name, last_name, city
FROM employees
WHERE city = 'New York'
OR city = 'Los Angeles';
OR mit AND kombinieren
Du kannst den OR- mit dem AND-Operator kombinieren, um komplexere Bedingungen in einer SQL-Abfrage zu formulieren. Wenn beide verwendet werden, setzen wir Klammern, um die Reihenfolge der Auswertung zu steuern.
Betrachte folgende Abfrage: Wir wollen alle Mitarbeitenden aus der IT-Abteilung und mit Wohnort "New York" (als eine Bedingung) auswählen oder alle, die mehr als 70.000 $ verdienen. Die Klammern gruppieren die AND-Bedingung, damit sie als Einheit vor dem OR ausgewertet wird.
-- Select columns
SELECT first_name, last_name, department, city, salary
FROM employees
-- Grouping IT department in New York
WHERE (department = 'IT' AND city = 'New York')
-- Employees with salary over 70,000
OR salary > 70000;

Beispielausgabe einer Tabelle, gefiltert durch die Kombination von OR und AND. Bild: Autor/in.
Die obige Abfrage prüft und gibt Datensätze zurück von:
-
Mitarbeitenden, die in der IT arbeiten und in New York leben.
-
Oder beliebigen Mitarbeitenden mit mehr als 70.000 $ Gehalt, unabhängig von Abteilung oder Stadt.
Wenn du OR mit AND kombinierst, gruppiere die Bedingungen korrekt mit Klammern. Fehler hierbei führen leicht zu logischen Irrtümern und unerwünschten Ergebnissen.
Ohne Klammern wird AND vor OR ausgewertet. Durch korrekt gesetzte Klammern legst du die gewünschte Reihenfolge explizit fest.
Beispiele: Der SQL-Operator OR in der Praxis
Der OR-Operator lässt sich in unterschiedlichen SQL-Anweisungen einsetzen, um Datensätze abzurufen oder Daten zu verändern. Hier sind einige typische Anwendungsfälle.
Daten mit mehreren Bedingungen filtern
OR wird vor allem genutzt, um Datensätze anhand von zwei oder mehr Bedingungen zu filtern. Das ist nützlich, wenn du die Suchkriterien in der Datenbank erweitern willst. Im folgenden Beispiel werden Mitarbeitende aus New York City oder mit einem Gehalt über 80.000 $ ausgegeben.
-- Select columns
SELECT first_name, last_name, department, city, salary
FROM employees
-- Employees in New York City
WHERE city = 'New York'
-- Employees with salary over 80,000
OR salary > 80000;
OR in INSERT-Anweisungen verwenden
Du kannst den OR-Operator mit INSERT kombinieren, um neue Datensätze einzufügen, sofern die Bedingungen erfüllt sind. Im Beispiel unten fügt die Abfrage einen neuen Datensatz in die Tabelle employees ein, wenn die Person entweder in der HR-Abteilung ist oder mehr als 60.000 $ verdient. Die Abfrage unten ist für SQL Server, MySQL und PostgreSQL gleich.
-- Insert a new record into the 'employees' table
INSERT INTO employees (employee_id, first_name, last_name, department, salary, city)
SELECT 49, 'Anna', 'Johnson', 'HR', 62000, 'New York'
-- First condition: department is 'HR'
WHERE 'HR' = 'HR'
-- Second condition: salary is greater than $60,000
OR 62000 > 60000;
In Oracle ist die INSERT-Anweisung anders aufgebaut und benötigt eine FROM-Klausel mit der speziellen Ein-Zeilen-Ein-Spalten-Tabelle dual. Wenn du speziell mit SQL Server arbeiten wirst, sieh dir unseren Kurs Introduction to SQL Server an.
-- Insert a new record into the 'employees' table
INSERT INTO employees (employee_id, first_name, last_name, department, salary, city)
SELECT 49, 'Anna', 'Johnson', 'HR', 62000, 'New York'
FROM dual
WHERE 'HR' = 'HR' -- First condition: department is 'HR'
OR 62000 > 60000; -- Second condition: salary is greater than $60,000
OR in UPDATE-Anweisungen verwenden
Mit UPDATE änderst du bestehende Datensätze in einer Tabelle. Den OR-Operator kannst du dabei nutzen, um nur die Datensätze anzupassen, die mindestens eine der Bedingungen erfüllen.
Im Beispiel unten aktualisieren wir das Gehalt, wenn Mitarbeitende in der Finanzabteilung tätig sind oder in Chicago leben.
-- Update the salary for the employee
UPDATE employees
-- Increase salary by 10%
SET salary = salary * 1.1
-- First condition: department is 'Finance'
WHERE department = 'Finance'
-- Second condition: employees in Chicago City
OR city = 'Chicago';
OR in DELETE-Anweisungen verwenden
Mit DELETE entfernst du bestehende Datensätze aus einer Tabelle. In Kombination mit OR kannst du gezielt Datensätze löschen, die bestimmte Bedingungen erfüllen.
Die folgende Abfrage entfernt Datensätze aus employees, wenn die Person aus Chicago stammt oder 60.000 $ verdient.
-- Delete records from the 'employees' table
DELETE FROM employees
-- First condition: employees from Chicago
WHERE city = 'Chicago'
-- Second condition: employees earning 60000
OR salary = 60000;
Performance-Überlegungen bei SQL-OR-Abfragen
Bei großen Datenmengen kann der OR-Operator Performance-Probleme verursachen. Das kann die Filterung spürbar verlangsamen. Hier sind häufige Ursachen und wie du sie abmilderst.
Full Table Scans
Bei großen Tabellen führt OR häufig zu Full Table Scans, vor allem ohne passende Indizes. Dadurch prüft die Abfrage jede Zeile und läuft langsamer. Lege sinnvolle Indizes auf die relevanten Spalten an, damit die Datenbank schneller findet, was sie braucht.
Komplexe Bedingungsprüfung
Prüft OR viele Bedingungen, kann die Abfrage deutlich langsamer werden, insbesondere ohne saubere Indexierung. Zerlege komplexe OR-Logik bei Bedarf in kleinere Teile, z. B. mit Unterabfragen, um die Performance zu verbessern.
Redundante Bedingungen
Unnötige OR-Bedingungen bremsen, weil jede geprüft werden muss. Beschränke dich auf notwendige und wahrscheinlich zutreffende Bedingungen, um die Abfrage zu straffen.
Alternativen zum OR-Operator
Wenn OR zu langsam ist, kannst du folgende Alternativen für Mehrfachbedingungen prüfen.
UNION verwenden
Mit UNION kombinierst du Ergebnisse aus zwei oder mehr SELECT-Abfragen — sinnvoll, wenn unterschiedliche Indizes greifen. Im folgenden Beispiel vereint UNION die Ergebnisse für Mitarbeitende aus der IT-department in city New York. Lies auch unser Tutorial UNION vs UNION ALL in SQL, falls du UNION noch nicht kennst.
-- Use UNION instead of OR for better performance
SELECT first_name, last_name, department, city
FROM employees
-- First condition
WHERE department = 'IT'
UNION
SELECT first_name, last_name, department, city
FROM employees
-- Second condition
WHERE city = 'New York';
CASE-Anweisungen verwenden
Die CASE-Anweisung ist eine wichtige Alternative zu OR, wenn du Logik direkt in die Abfrage integrieren willst. CASE kann durch optimale Auswertung die Performance verbessern. Die folgende Abfrage nutzt CASE, um Abteilungen anhand mehrerer Bedingungen zu kategorisieren.
-- Select first name, last name, and a derived category based on conditions
SELECT first_name, last_name,
-- Use CASE to determine the category based on department or city
CASE
-- If department is 'IT', categorize as 'Tech' If city is 'New York', categorize as 'NYC'
WHEN department = 'IT' THEN 'Tech'
WHEN city = 'New York' THEN 'NYC' --
ELSE 'Other'
END AS category
FROM employees;
Sieh dir unseren Skill-Lernpfad SQL Fundamentals an, um mehr über den UNION-Operator und CASE-Anweisungen für die Datenmanipulation zu lernen.
Werde SQL-zertifiziert
Fazit
Der OR-Operator ist ein vielseitiges SQL-Werkzeug, um flexible und auch komplexe Abfragen zu bauen. Mit OR filterst du Tabellenzeilen auf Basis mehrerer Bedingungen. Wie gesehen ermöglicht OR in Kombination mit INSERT-, UPDATE- und DELETE-Anweisungen auch das Verändern von Datensätzen. Für Datenanalyst/innen ist es wichtig, typische Performance-Fallen von OR zu kennen und Alternativen wie den UNION-Operator und CASE WHEN-Anweisungen parat zu haben.
Ich empfehle dir, den OR-Operator mit unterschiedlichen Datensätzen zu üben, um ein gutes Gefühl für sein Verhalten zu bekommen. Um deine SQL-Kompetenzen weiter auszubauen, lohnt sich unser Career Track Associate Data Analyst in SQL. Im Kurs Reporting in SQL lernst du zudem, Daten per Dashboard zu analysieren und zu präsentieren. Abschließend empfehle ich die SQL Associate Certification von DataCamp, um deine Fähigkeiten in SQL für die Datenanalyse offiziell nachzuweisen.
Häufige SQL-Fragen
Was ist der Unterschied zwischen den Operatoren OR und AND in SQL?
Der Operator OR liefert Ergebnisse, wenn mindestens eine der Bedingungen wahr ist; AND liefert nur dann Ergebnisse, wenn alle Bedingungen wahr sind.
Kann man den OR-Operator zusammen mit AND in einer Abfrage verwenden?
Du kannst OR und AND in einer Abfrage kombinieren, um nach mehreren Bedingungen zu filtern. Nutze dabei Klammern, um die Bedingungen zu gruppieren und die Ausführungsreihenfolge festzulegen.
Gibt es eine Begrenzung für die Anzahl der Bedingungen mit OR in SQL?
Die Anzahl der mit OR geprüften Bedingungen ist nicht begrenzt, allerdings können zu viele Bedingungen die Abfrageleistung beeinträchtigen.
Kann man mit dem OR-Operator Daten in Tabellen verändern?
Ja. Du kannst den OR-Operator mit INSERT-, UPDATE- und DELETE-Anweisungen verwenden, um gezielt Datensätze in Tabellen zu verändern.
Welche SQL-Alternativen gibt es zum OR-Operator?
Als Alternativen zu OR kommen der UNION-Operator und CASE WHEN-Anweisungen infrage, um Datensätze anhand mehrerer Bedingungen zu filtern.
