0Pricing
SQL Interview Prep · Lektion

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 SQL 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 SQL Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL 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: department aufsteigend
  • Tie-Breaker: salary absteigend
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 ASC zuletzt und bei DESC zuerst sortiert.
  • MySQL und SQL Server: NULL-Werte werden bei ASC zuerst und bei DESC zuletzt 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 BY hinzufügen.
  • Die Richtung gilt pro Spalte; ASC ist 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/LAST oder andernorts ein führendes IS 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 SQL Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL 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 SQL 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 SQL Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. SQL 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 SQL Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede SQL 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

  1. Sortieren nach mehreren Spalten und Platzierung von NULL
  2. LIMIT, OFFSET und FETCH FIRST
  3. Die obersten N Zeilen zuverlässig zurückgeben
  4. Nach Ausdrücken und Aliasen sortieren
← Zurück zu SQL Interview Prep