Direkt zum Inhalt

Wie man SQL OFFSET verwendet

Beherrsche die SQL OFFSET-Klausel. Entdecke, wie du mit ORDER BY und LIMIT Werte basierend auf der Position zurückgeben kannst, mit praktischen Beispielen, einschließlich Datenpaginierung für Webanwendungen.
Aktualisierte 16. Jan. 2025  · 10 Min. Lesezeit

SQL OFFSET ist eine leistungsstarke Klausel, mit der eine bestimmte Anzahl von Zeilen in einem Abfrageergebnis übersprungen werden kann. Sie wird oft mit der LIMIT Klausel für die Paginierung von Daten kombiniert.

In diesem Tutorium erfährst du, wie OFFSET funktioniert, welche praktischen Anwendungen es gibt und wie du deine SQL-Abfragen am besten optimierst. Wenn du die SQL-Operationen noch einmal durchgehen möchtest, bevor wir anfangen, wirf einen Blick auf unser Spickzettel für die SQL-Grundlagen.

Die schnelle Antwort: Wie man SQL OFFSET verwendet

Die OFFSET Klausel in SQL wird verwendet, um eine bestimmte Anzahl von Zeilen zu überspringen, bevor die Zeilen in der Ergebnismenge zurückgegeben werden. Sie wird oft in Kombination mit der LIMIT-Klausel verwendet, um Ergebnisse zu paginieren.

SELECT column_names
FROM table_name
ORDER BY column_name
LIMIT number_of_rows OFFSET offset_value;

In der obigen SQL-Abfrage gibt number_of_rows die Anzahl der Zeilen an, die zurückgegeben werden sollen, während offset_value die Anzahl der Zeilen angibt, die die Abfrage überspringen soll, bevor sie sie zurückgibt. 

Wie OFFSET funktioniert

Die OFFSET Klausel überspringt die angegebene Anzahl von Zeilen in der Ergebnismenge. In Verbindung mit ORDER BY sorgt sie für konsistente Ergebnisse, indem sie Zeilen in einer bestimmten Reihenfolge überspringt, die normalerweise durch einen Spaltennamen angegeben wird. Standardmäßig gibt ORDER BY die angegebene Spalte in aufsteigender Reihenfolge zurück.

Angenommen, du möchtest aus einer Tabelle employees die folgenden Spalten abfragen: employee_id, first_name, last_name, phone_number und salary. Du willst auch die ersten 9 Zeilen aus deinen Ergebnissen ausschließen. Du wirst die folgende SQL-Abfrage verwenden.

-- Select all columns for employees, starting from the 10th row
SELECT employee_id, first_name, last_name, phone_number, salary
FROM employees
-- Order by employee_id to ensure consistent ordering
ORDER BY employee_id
-- Skip the first 9 rows
OFFSET 9 ROWS;

Es ist wichtig, daran zu denken, dass aufgrund der nicht eindeutigen Sortierspalten darauf geachtet werden muss, doppelte Datensätze zu vermeiden.

Kombination von LIMIT und OFFSET

OFFSET wird in der Regel mit LIMIT verwendet, um die Anzahl der zurückgegebenen Zeilen zu steuern und zu bestimmen, wo die Rückgabe beginnen soll. 

Im folgenden Beispiel gibt die LIMIT Klausel nur die nächsten 10 Zeilen zurück, nachdem sie die ersten 9 Zeilen übersprungen hat.

-- Select all columns for employees, starting from the 10th row and fetching the next 10 rows
SELECT employee_id, first_name, last_name, phone_number, salary
FROM employees
-- Order by employee_id to ensure consistent ordering
ORDER BY employee_id
-- Skip the first 9 rows
OFFSET 9
-- Fetch the next 10 rows
LIMIT 10;

Praktische Anwendungen von OFFSET

SQL OFFSET wird häufig für die Paginierung in Webanwendungen verwendet. Bei der Paginierung von Daten handelt es sich um eine Technik, mit der große Daten in kleinere Teile zerlegt werden können, was den Nutzern hilft, große Datenmengen effizient zu navigieren. 

Ich halte die Paginierung von Daten für eines der besten Beispiele für die Verwendung von OFFSET und LIMIT. Bei dieser Technik werden die Klauseln OFFSET und LIMIT zusammen verwendet, um die Daten in überschaubare Teile aufzuteilen, die auf mehreren Seiten angezeigt werden.  

Das verbessert das Nutzererlebnis, weil niemand von einer riesigen Liste auf einmal überwältigt wird. 

Andere Anwendungen von OFFSET sind:

  1. Überspringen bestimmter Datensätze bei der Analyse von Daten.
  2. Aufbereitung von Daten für den Export in Chunks (bei Verwendung in Kombination mit LIMIT).
  3. Konzentriere dich einfach auf Daten in einem bestimmten Bereich, wenn du weißt, wonach du suchst. 

Datenbank-spezifische Unterstützung und Alternativen

Verschiedene Datenbanken unterstützen OFFSET und LIMIT Klauseln, darunter MySQL, PostgreSQL und SQLite. Für Datenbanken, die die Anweisungen OFFSET und LIMIT nicht unterstützen, wie z.B. SQL Server, können alternative Methoden wie FETCH verwendet werden.

Die folgende Abfrage (mit LIMIT) würde zum Beispiel Werte in MySQL-, SQLite- und PostgreSQL-Datenbanken zurückgeben, aber nicht in SQL Server.

-- Select all columns for employees, starting from the 10th row and fetching the next 10 rows
SELECT employee_id, first_name, last_name, phone_number, salary
FROM employees
-- Order by employee_id to ensure consistent ordering
ORDER BY employee_id
-- Skip the first 9 rows
OFFSET 9
-- Fetch the next 10 rows
LIMIT 10;

Daher solltest du FETCH in SQL Server verwenden, um ähnliche Ergebnisse mit der folgenden Abfrage zu erhalten;

-- Select specific columns for employees, starting from the 10th row and fetching the next 10 rows
SELECT employee_id, first_name, last_name, phone_number, salary
FROM employees
-- Order by employee_id to ensure consistent ordering
ORDER BY employee_id 
-- Skip the first 9 rows (starting from the 10th row)
OFFSET 9 ROWS 
 -- Fetch the next 10 rows
FETCH NEXT 10 ROWS ONLY;

Fortgeschrittene Techniken: OFFSET und FETCH

Die FETCH Klausel, die im SQL-Standard verwendet wird, kann eine fortschrittliche Alternative zu LIMIT sein. Während OFFSET die Anzahl der zu überspringenden Zeilen angibt, gibt FETCH die Anzahl der Zeilen an, die von der Abfrage zurückgegeben werden sollen.

-- Selecting columns from employees table
SELECT employee_id, first_name, last_name, phone_number, salary
FROM employees
-- Ordering the result set by employee_id for consistent pagination
ORDER BY employee_id
-- Skipping the first 20 rows in the result set
OFFSET 20 ROWS
-- Fetching the next 10 rows only after the offset
FETCH NEXT 10 ROWS ONLY;

Weitere fortgeschrittene SQL-Techniken findest du in unserem Kurs Associate Data Analyst in SQL.

Leistungsüberlegungen und andere bewährte Praktiken 

Um OFFSET effektiv zu nutzen, musst du die Auswirkungen auf die Abfrageleistung verstehen. 

OFFSET kann sich auf die Abfrageleistung auswirken, besonders bei großen Datensätzen. SQL Server kann Abfragen effizient zwischenspeichern und ausführen, aber die Verwendung von OFFSET mit großen Datensätzen kann zusätzliche Optimierungsstrategien erfordern, z. B. die Verwendung von Common Table Expressions (CTEs) oder temporären Tabellen. Deshalb musst du die Abfrageleistung überwachen, um Probleme zu erkennen und Engpässe zu beheben, die die Abfrageausführung behindern. Der DataCamp-Kurs "SQL Server für Fortgeschrittene " enthält ein Kapitel über allgemeine Tabellenausdrücke und andere fortgeschrittene Themen. 

Hier sind einige weitere Best Practices, die ich in meiner Praxis entdeckt habe.

  • Verwende immer eine entsprechende ORDER BY Klausel. Dieser Ansatz stellt sicher, dass die Datensätze einheitlich sortiert werden.
  • Erwäge Techniken zur Indexierung und Abfrageoptimierung. Diese Methode gewährleistet eine optimale Leistung, vor allem bei großen Datenbanken.

Fazit und weiteres Lernen

Die Beherrschung der OFFSET Klausel, die mit LIMIT kombiniert wird, ist entscheidend für eine effiziente Datenverwaltung. Experimentiere mit diesen Klauseln in deinen SQL-Abfragen, um die Leistung zu verbessern und die Benutzerfreundlichkeit zu erhöhen. Mehr über die OFFSET Klausel in SQL erfährst du in den DataCamp-Kursen Intermediate SQL und SQL-Grundlagen.

Ebenso kannst du in unserem Kurs Reporting in SQL mehr über die Datenanalyse mit SQL erfahren. Wenn du außerdem deine praktischen Fähigkeiten bei SQL-Projekten unter Beweis stellen willst, empfehle ich dir, die SQL Associate-Zertifizierung zu erwerben, um dich bei Vorstellungsgesprächen hervorzuheben.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Ich verfasse Artikel, die Datenwissenschaft und Analytik vereinfachen und leicht verständlich und zugänglich machen.

Häufig gestellte Fragen

Was ist die OFFSET-Klausel in SQL?

Die OFFSET Klausel wird verwendet, um Zeilen zu überspringen, bevor die Ergebnisse einer Abfrage zurückgegeben werden.

Warum verwenden wir ORDER BY mit OFFSET?

Obwohl unsere Abfrage ohne die ORDER BY Klausel ausgeführt wird, kann es sein, dass die Ausgabe nicht konsistent oder wie erwartet ist. Die Verwendung von OFFSET ohne ORDER BY bedeutet, dass die Datenbank-Engine keine bestimmte Reihenfolge einhalten muss, was zu unvorhersehbaren Ergebnissen führen kann. Deshalb verwenden wir ORDER BY, damit wir nicht überrascht werden.

Warum gibt die LIMIT-Klausel in SQL Server einen Fehler zurück?

Die LIMIT Klausel wird in MySQL, PostgreSQL und SQLite unterstützt. Verwende FETCH für SQL Server.

Was ist der Unterschied zwischen OFFSET und LIMIT?

Die OFFSET Klausel überspringt bestimmte Zeilen, bevor die Datensätze zurückgegeben werden, während die LIMIT Klausel die Anzahl der zurückzugebenden Datensätze einschränkt.

Was passiert, wenn die Ausführung meiner OFFSET-Abfrage Zeit in Anspruch nimmt?

Du kannst die Abfrage mit Common Table Expressions (CTEs) oder temporären Tabellen optimieren.

Themen

SQL lernen mit DataCamp

Zertifizierung verfügbar

Kurs

Einführung in SQL

2 hr
891.9K
Lerne in nur zwei Stunden, wie man relationale Datenbanken mit SQL erstellt und abfragt.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow