Sortieren nach mehreren Spalten und Platzierung von NULL
ASC/DESC kombinieren und verstehen, wie sich NULLS FIRST/LAST in verschiedenen Datenbanken unterscheidet
Sortieren nach mehreren Spalten und Platzierung von NULL ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Warum Sortierung in Interviews vorkommt
Interviewer greifen früh auf ORDER BY zurück, weil sich daran zeigt, ob Sie verstehen, dass eine SQL-Ergebnismenge standardmäßig ungeordnet ist. Ohne eine ausdrückliche Sortierung darf die Datenbank die Zeilen in jeder beliebigen Reihenfolge zurückgeben.
Eine häufige Einstiegsfrage lautet: „Wie stellen Sie sicher, dass die Zeilen in einer bestimmten Reihenfolge zurückgegeben werden?“ Die einzig richtige Antwort ist eine ausdrückliche ORDER BY-Klausel. Sich auf die Einfügereihenfolge, die Reihenfolge des Primärschlüssels oder die Indexreihenfolge zu verlassen, ist ein klassischer Fehler von Einsteigern.
In dieser Lektion lernen Sie Sortierungen nach mehreren Spalten und die knifflige Frage, wo NULL-Werte landen, sicher zu beherrschen.
Grundlagen von ASC und DESC
ORDER BY sortiert standardmäßig aufsteigend (ASC). Nur zum Umkehren der Reihenfolge benötigen Sie DESC. Die Richtung gilt pro Spalte, nicht für die gesamte Klausel.
Interview-Tipp: Sagen Sie, dass ASC der implizite Standard ist, sodass Sie es nicht angeben müssen. Viele Bewerber glauben fälschlicherweise, ein einzelnes DESC kehre die Reihenfolge aller Spalten um.
SELECT name, hire_date
FROM employees
ORDER BY hire_date DESC;Sortieren nach mehreren Spalten
Listen Sie mehrere durch Kommas getrennte Spalten auf. SQL sortiert zunächst nach der ersten Spalte, löst Gleichstände dann mit der zweiten Spalte auf und so weiter. Stellen Sie sich das als Kette von Tie-Breakern vor.
Das Beispiel sortiert zunächst alphabetisch nach Abteilung und innerhalb jeder Abteilung nach dem Gehalt, beginnend mit dem höchsten.
- Primärsortierung:
departmentaufsteigend - Tie-Breaker:
salaryabsteigend
SELECT department, name, salary
FROM employees
ORDER BY department ASC, salary DESC;ASC und DESC kombinieren
Eine häufige Falle im Interview: Jede Spalte erhält ihre eigene Richtung. ORDER BY a, b DESC sortiert a aufsteigend und b absteigend, nicht beide Spalten absteigend.
Wenn beide Spalten absteigend sortiert werden sollen, müssen Sie ORDER BY a DESC, b DESC schreiben. Seien Sie ausdrücklich, wenn die Frage unterschiedliche Richtungen kombiniert.
SELECT region, sales_year, revenue
FROM sales
ORDER BY region ASC, sales_year DESC;Wo landen NULL-Werte?
Das ist der Kern dieser Lektion. NULL bedeutet unbekannt, daher schreibt der Standard keine feste Position vor, und Datenbanken unterscheiden sich beim Standardverhalten:
- PostgreSQL und Oracle: NULL-Werte werden bei
ASCzuletzt und beiDESCzuerst sortiert. - MySQL und SQL Server: NULL-Werte werden bei
ASCzuerst und beiDESCzuletzt sortiert (sie werden als kleinster Wert behandelt).
Interviewer fragen gerne: „Wo erscheinen die NULL-Werte bei dieser Sortierung?“ Die ehrliche Antwort lautet: Das hängt von der Datenbank ab, sofern Sie die Position nicht ausdrücklich festlegen.
NULL-Position explizit steuern
Um die Position unabhängig von den Standardeinstellungen der Datenbank deterministisch festzulegen, verwenden Sie NULLS FIRST oder NULLS LAST. PostgreSQL, Oracle und SQLite unterstützen dies direkt.
Die folgende Abfrage zwingt unbekannte Einstellungsdaten ans Ende, obwohl die Spalte aufsteigend sortiert wird.
SELECT name, hire_date
FROM employees
ORDER BY hire_date ASC NULLS LAST;NULLS LAST in MySQL nachbilden
MySQL unterstützt das Schlüsselwort NULLS LAST nicht. Die portable Lösung besteht in einem führenden Sortierschlüssel, der angibt, ob der Wert NULL ist.
Der Ausdruck hire_date IS NULL liefert für echte Daten 0 und für NULL-Werte 1. Wenn dieser Ausdruck aufsteigend sortiert wird, landen die NULL-Werte am Ende; anschließend sortiert der zweite Schlüssel die tatsächlichen Daten.
SELECT name, hire_date
FROM employees
ORDER BY (hire_date IS NULL) ASC, hire_date ASC;NULLS FIRST in SQL Server nachbilden
Auch SQL Server unterstützt NULLS FIRST/LAST nicht. Verwenden Sie einen CASE-Ausdruck als führenden Sortierschlüssel. Hier erhalten NULL-Werte den Rang 0 und erscheinen daher zuerst.
Dieses Muster sollten Sie sich merken: Eine berechnete Kennzeichenspalte vor der eigentlichen Sortierspalte gibt Ihnen in jedem Dialekt vollständige Kontrolle über die Position von NULL-Werten.
SELECT name, hire_date
FROM employees
ORDER BY CASE WHEN hire_date IS NULL THEN 0 ELSE 1 END,
hire_date ASC;Praxisbeispiel: Bestenliste
Angenommen, Sie erstellen eine Bestenliste: Die höchste Punktzahl steht an erster Stelle, und bei gleicher Punktzahl erhält die Person mit der frühesten Registrierung den höheren Rang. Personen, die noch nie Punkte erzielt haben (NULL score), gehören ans Ende.
Die Sortierung benötigt drei Schlüssel: ein NULL-Kennzeichen, die Punktzahl absteigend und das Registrierungsdatum aufsteigend als Tie-Breaker.
SELECT player, score, signup_date
FROM players
ORDER BY (score IS NULL) ASC,
score DESC,
signup_date ASC;Einschränkung zur Sortierstabilität
Eine weitere beliebte Frage lautet: „Wenn zwei Zeilen bei jedem ORDER BY-Schlüssel gleich sind, in welcher Reihenfolge werden sie zurückgegeben?“
Die Antwort lautet: nicht definiert. SQL-Sortierungen sind nicht garantiert stabil. Gleiche Zeilen können daher in beliebiger relativer Reihenfolge erscheinen, und diese Reihenfolge kann sich zwischen Ausführungen oder nach einer Indexänderung ändern.
Die Lösung besteht darin, einen vollständig eindeutigen Tie-Breaker hinzuzufügen, normalerweise einen Primärschlüssel, damit das Ergebnis reproduzierbar ist.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC;Hinweis zur Sortierleistung
Sortieren kann teuer sein. Wenn ORDER BY in derselben Spaltenreihenfolge und mit denselben Richtungen einem vorhandenen Index entspricht, kann die Datenbank die Zeilen bereits vorsortiert lesen und einen separaten Sortierschritt überspringen.
Unterschiedliche Richtungen – beispielsweise wenn der Index vollständig aufsteigend ist, Sie aber eine Spalte absteigend sortieren – verhindern dies normalerweise und erzwingen eine Sortierung im Arbeitsspeicher oder auf der Festplatte. Wenn Sie diesen Zusammenhang zwischen Indexreihenfolge und Sortierkosten erwähnen, zeigen Sie dem Interviewer Ihre Erfahrung.
Schnelle Überprüfung
Testen Sie Ihr Verständnis der Regeln für Sortierrichtungen bei mehreren Spalten.
Zusammenfassung
Die wichtigsten Punkte zur Sortierung nach mehreren Spalten und zur Position von NULL-Werten:
- Ergebnismengen sind ungeordnet, solange Sie kein
ORDER BYhinzufügen. - Die Richtung gilt pro Spalte;
ASCist der Standard. - Die Position von NULL-Werten hängt von der Datenbank ab: bei ASC zuletzt in Postgres/Oracle, bei ASC zuerst in MySQL/SQL Server.
- Verwenden Sie, wo unterstützt,
NULLS FIRST/LASToder andernorts ein führendesIS NULL- bzw.CASE-Kennzeichen. - Fügen Sie für eine reproduzierbare Reihenfolge einen eindeutigen Tie-Breaker hinzu, etwa den Primärschlüssel.
Häufig gestellte Fragen
Ist die Lektion „Sortieren nach mehreren Spalten und Platzierung von NULL“ kostenlos?
Ja — der vollständige Text von „Sortieren nach mehreren Spalten und Platzierung von NULL“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Sortieren nach mehreren Spalten und Platzierung von NULL“?
ASC/DESC kombinieren und verstehen, wie sich NULLS FIRST/LAST in verschiedenen Datenbanken unterscheidet Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Coding Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Sortieren nach mehreren Spalten und Platzierung von NULL“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Sortieren nach mehreren Spalten und Platzierung von NULL
- LIMIT, OFFSET und FETCH FIRST
- Die obersten N Zeilen zuverlässig zurückgeben
- Nach Ausdrücken und Aliasen sortieren