Zum Inhalt
wannacode

ORDER BY, LIMIT und DISTINCT

Kurz gesagt: ORDER BY sortiert das Ergebnis, LIMIT und OFFSET nehmen einen Teil davon, und DISTINCT entfernt doppelte Zeilen.

Problem

Die Top 3 für das Schaufenster

Der Inhaber will die drei teuersten Produkte auf der Startseite. Du weißt, wie du Name und Preis holst. Aber in welcher Reihenfolge kommen die Zeilen, und wie nimmst du nur drei?

Die Idee

ORDER BY

ORDER BY sortiert das Ergebnis. Standardmäßig vom Kleinen zum Großen:

SQLDatenbank: Shop

DESC kehrt es um, vom Großen zum Kleinen:

SQLDatenbank: Shop

Du kannst nach mehreren Spalten sortieren: erst nach der ersten, und bei Gleichstand nach der zweiten. Kunden nach Stadt, und innerhalb einer Stadt nach Name:

SQLDatenbank: Shop

Text wird alphabetisch sortiert, Datumsangaben wie 2026-10-19 nach der Zeit.

Genauer, für Neugierige

Ohne ORDER BY ist die Reihenfolge der Zeilen nicht versprochen. Oft kommt sie nach id heraus, aber das ist ein Zufall davon, wie die Datenbank die Tabelle gelesen hat. Nach einer Änderung an der Tabelle oder mit einem neuen Index kann sich die Reihenfolge ändern. Wenn dir die Reihenfolge wichtig ist, schreib ORDER BY.

Die Idee

LIMIT: nur die ersten

LIMIT n liefert die ersten n Zeilen des Ergebnisses. Zusammen mit ORDER BY ergibt das eine Top-N-Liste:

SQLDatenbank: Shop

LIMIT läuft zuletzt, nach dem Sortieren. Deshalb stimmt „die drei teuersten“. Ohne ORDER BY wären es drei zufällige Produkte.

OFFSET überspringt Zeilen. So entstehen Seiten: die zweite Seite der Bestellungen, 10 pro Seite:

SQLDatenbank: Shop

Probier es aus

Die neuen Kunden

Zeige Name und Anmeldedatum der fünf neuesten Kunden, den neuesten zuerst.

SQLDatenbank: Shop

Die Idee

DISTINCT: ohne Wiederholungen

Aus welchen Städten sind die Kunden? Mit SELECT city wiederholt sich jede Stadt so oft, wie sie Kunden hat. DISTINCT entfernt die Wiederholungen:

SQLDatenbank: Shop

Sechs Städte und NULL: Boris hat keine Stadt, und dieses Fehlen ist auch ein eigenes Ergebnis.

Probier es aus

Die Bestellstatus

Zeige alle verschiedenen Bestellstatus in alphabetischer Reihenfolge.

SQLDatenbank: Shop

Übung

Günstig und auf Lager

Zeige Name, Preis und Lagerbestand der fünf günstigsten Produkte, die auf Lager sind, das günstigste zuerst.

SQLDatenbank: Shop
Genauer, für Neugierige

Wohin kommen NULL beim Sortieren? In SQLite und MySQL setzt ORDER BY city sie nach vorn; in PostgreSQL und Oracle kommen sie zuletzt. Wenn es darauf ankommt, sag es: ORDER BY city NULLS LAST. SQLite versteht das seit Version 3.30.

SQLDatenbank: Shop

Test

Teste dich

1. In welcher Reihenfolge kommen die Zeilen eines SELECT ohne ORDER BY?
2. Was macht LIMIT 10 OFFSET 20?
3. SELECT DISTINCT city FROM customers liefert auch NULL. Warum?
4. Wie schreibst du „das teuerste zuerst“?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·