27th Nov 2023 8 Leseminuten Was bedeutet ORDER BY 1 in SQL? Dominika Florczykowska ORDER BY Inhaltsverzeichnis Lassen Sie uns ORDER BY 1 in Aktion sehen! Aufsteigende und absteigende Reihenfolge Was bedeutet ORDER BY 1, 2, 3? Achtung! Verwenden Sie nicht die ORDER BY 1-Syntax Möchten Sie mehr über ORDER BY 1 erfahren? Haben Sie jemals die "ORDER BY 1"-Syntax in SQL-Abfragen gesehen und sich gefragt, was sie bedeutet? In diesem Artikel werden wir diese Syntax untersuchen, ihren Zweck erklären und sie leichter verständlich machen. Unabhängig davon, ob Sie ein erfahrener SQL-Benutzer sind oder gerade erst anfangen, diese Sprache zu erforschen, ist Ihnen die ORDER BY-Klausel wahrscheinlich schon einmal begegnet. In SQL wird die ORDER BY Klausel verwendet, um die Zeilen in einer Tabelle nach einer oder mehreren Spalten zu sortieren. Sie ermöglicht es Ihnen, Ihre Daten nach bestimmten Kriterien in aufsteigender (A-Z, 1-10) oder absteigender (Z-A, 10-1) Reihenfolge anzuordnen. Nach der ORDER BY -Klausel geben Sie normalerweise die Spalte an, nach der Sie die Daten sortieren möchten. Es mag Sie jedoch überraschen zu erfahren, dass Sie auch eine Syntax wie ORDER BY 1 in einer SQL-Abfrage verwenden können. Die Syntax für eine solche Abfrage lautet wie folgt: SELECT column_name(s) FROM table_name ORDER BY 1; Wenn Sie diese Art von Code in SQL-Abfragen gesehen haben und verwirrt waren, machen Sie sich keine Sorgen! Am Ende dieses Artikels werden Sie genau verstehen, wie er funktioniert und wann er zu verwenden ist. Und wenn Sie während des Lesens dieses Artikels die SQL-Syntax noch einmal auffrischen müssen, dann zögern Sie nicht, sich unser praktisches SQL für Anfänger Cheat Sheet anzusehen! Um wirklich gut in SQL zu werden, sollten Sie es üben. Wenn Sie viele Übungsaufgaben bearbeiten möchten, empfehlen wir Ihnen unseren SQL-Praxis Pfad. Sie lernen, indem Sie reale Probleme lösen und dabei unseren Online-Code-Editor und echte Datensätze verwenden. Dieser Pfad besteht aus neun Kursen und über 1.100 praktischen Übungen zum Üben. Lassen Sie uns ORDER BY 1 in Aktion sehen! Stellen Sie sich vor, Sie haben eine Tabelle namens movie mit den folgenden Spalten: id - Die ID des Films, die auch der Primärschlüssel (PK) der Tabelle ist. title - Der Titel des Films. length - Die Länge des Films in Minuten. director - Der Name des Regisseurs des Films. year - Das Jahr, in dem der Film erstmals veröffentlicht wurde. rating - Die Bewertung des Films (von 1 bis 10). Hier sehen Sie eine Handvoll Zeilen aus der Tabelle: idtitlelengthdirectoryearrating 1The Secret Quest110David Anderson20227 2Lost in Time95Emily Roberts20196 3Starship Odyssey150Michael Turner20218 4The Enchanted Forest85Sarah Johnson20227 5Epic Journey130Mark Lewis20207 6Space Explorers115Lisa Adams20227 7Time Travelers100Paul Miller20216 8Mystic Island140Jessica White20238 9The Great Discovery105Robert Green20217 10Underwater120Mary Johnson20216 Was passiert, wenn wir die folgende Abfrage ausführen? SELECT title, length, director FROM movie ORDER BY 1; Durch die Angabe von ORDER BY 1 weisen wir die Datenbank an, die Ergebnisse anhand der ersten Spalte in der Liste SELECT zu sortieren, die in diesem Fall title ist. Das bedeutet, dass die obige Abfrage mit dieser gleichzusetzen ist: SELECT title, length, director FROM movie ORDER BY title; Die erste Abfrage ist etwas kürzer, kann aber schwieriger zu verstehen sein. Bei der zweiten Abfrage können Sie leicht erkennen, welche Spalte für die Sortierung verwendet wird. Dadurch wird die Wahrscheinlichkeit eines Fehlers verringert. Dies ist das Ergebnis unserer Abfrage: titlelengthdirector Epic Journey130Mark Lewis Lost in Time95Emily Roberts Mystic Island140Jessica White Space Explorers115Lisa Adams Starship Odyssey150Michael Turner The Enchanted Forest85Sarah Johnson The Great Discovery105Robert Green The Secret Quest110David Anderson Time Travelers100Paul Miller Underwater120Mary Johnson Wenn sich die Reihenfolge der ausgewählten Spalten ändern würde, müssten Sie eine andere Spaltennummer verwenden: SELECT director, title, length FROM movie ORDER BY 2; Wie Sie sehen, kann die Verwendung dieser Syntax ein wenig kompliziert sein. Wussten Sie, dass Sie eine ähnliche Syntax in der GROUP BY Klausel verwenden können? Sehen Sie sich unseren Artikel über die GROUP BY 1-Syntax an! Aufsteigende und absteigende Reihenfolge Standardmäßig sortiert die ORDER BY Klausel die Ergebnisse vom niedrigsten zum höchsten Wert - also in aufsteigender Reihenfolge. Es kann jedoch vorkommen, dass Sie die Daten in absteigender Reihenfolge sortieren müssen. Das können Sie auch mit der ORDER BY 1 -Syntax erreichen. Fügen Sie dazu einfach das Schlüsselwort ASC oder DESC nach 1 ein. Wenn Sie zum Beispiel die Liste der Filme abrufen und vom längsten zum kürzesten sortieren möchten, könnten Sie eine Abfrage wie die folgende ausführen: SELECT title, length, director FROM movie ORDER BY 2 DESC; Die obige Abfrage ist das Äquivalent zu: SELECT title, length, director FROM movie ORDER BY length DESC; Und hier ist das Ergebnis unserer Abfrage: titlelengthdirector Starship Odyssey150Michael Turner Mystic Island140Jessica White Epic Journey130Mark Lewis Underwater120Mary Johnson Space Explorers115Lisa Adams The Secret Quest110David Anderson The Great Discovery105Robert Green Time Travelers100Paul Miller Lost in Time95Emily Roberts The Enchanted Forest85Sarah Johnson Was bedeutet ORDER BY 1, 2, 3? In unserem vorherigen Beispiel haben wir die Daten nach nur einer Spalte sortiert. Jetzt möchten wir unsere Zeilen nach drei verschiedenen Spalten sortieren: year, rating, und title. Dazu können wir die folgende Abfrage verwenden: SELECT year, rating, title FROM movie ORDER BY 1, 2, 3; Wenn Sie ORDER BY mit mehreren Spalten verwenden, sortiert die Datenbank die Zeilen zunächst auf der Grundlage der ersten angegebenen Spalte. Wenn es doppelte Werte in der ersten Spalte gibt, sortiert die Datenbank diese Zeilen weiter nach der zweiten angegebenen Spalte usw. Wenn Sie ORDER BY 1, 2, 3 verwenden, weisen wir die Datenbank an, die Ergebnisse nach der ersten, zweiten und dritten Spalte in der Liste SELECT zu sortieren. Dies ist gleichbedeutend mit der Ausführung der folgenden Abfrage: SELECT year, rating, title FROM movie ORDER BY year, rating, title; Die Abfrage gibt Folgendes zurück: yearratingtitle 20196Lost in Time 20207Epic Journey 20216Time Travelers 20216Underwater 20217The Great Discovery 20218Starship Odyssey 20227Space Explorers 20227The Enchanted Forest 20227The Secret Quest 20238Mystic Island Die obige Abfrage sortiert die Ergebnisse in aufsteigender Reihenfolge für alle Spalten. Was wäre, wenn wir die Ergebnisse nach dem Jahr vom neuesten bis zum ältesten, dann nach der Bewertung vom höchsten bis zum niedrigsten und schließlich alphabetisch nach dem Titel sortieren wollten? Wir können all dies tun, indem wir ASC oder DESC nach jeder Spalte schreiben: SELECT year, rating, title FROM movie ORDER BY 1 DESC, 2 DESC, 3 ASC; Das Ergebnis dieser Abfrage ist: yearratingtitle 20238Mystic Island 20227Space Explorers 20227The Enchanted Forest 20227The Secret Quest 20218Starship Odyssey 20217The Great Discovery 20216Time Travelers 20216Underwater 20207Epic Journey 20196Lost in Time Beachten Sie, dass die Spaltennummern in der ORDER BY Klausel nicht fortlaufend sein müssen. Sie können auch eine Abfrage wie diese schreiben: SELECT title, year, rating FROM movie ORDER BY 2 DESC, 3 DESC, 1 ASC; Jetzt weisen wir die Datenbank an, die Ergebnisse auf der Grundlage der zweiten, dritten und ersten Spalte in der Liste SELECT zu gruppieren. Sie können auch Spaltennummern und Namen in einer einzigen ORDER BY Klausel mischen: SELECT title, year, rating FROM movie ORDER BY 2 DESC, 3 DESC, title ASC; In diesem Fall gruppieren wir die Ergebnisse auf der Grundlage der zweiten und dritten Spalte in der Liste SELECT und der Spalte title. Die obigen Abfragen ergeben Folgendes: titleyearrating Mystic Island20238 Space Explorers20227 The Enchanted Forest20227 The Secret Quest20227 Starship Odyssey20218 The Great Discovery20217 Time Travelers20216 Underwater20216 Epic Journey20207 Lost in Time20196 Achtung! Verwenden Sie nicht die ORDER BY 1-Syntax Die Verwendung der ORDER BY 1 und ORDER BY 1, 2, 3 Syntax in SQL wird im Allgemeinen als schlechte Praxis angesehen, da sie das Lesen und die Wartung Ihrer Abfragen erschwert. Sie kann Ihnen zwar einige Tipparbeit ersparen, kann aber auch unerwartete Probleme verursachen. Das Hauptproblem bei diesem Ansatz ist, dass er sich auf die Reihenfolge der Spalten in Ihrer SELECT -Anweisung verlässt, anstatt die Spaltennamen direkt anzugeben. Wenn sich die Reihenfolge der Spalten ändert oder neue Spalten hinzugefügt werden, können sich Ihre Abfrageergebnisse in einer Weise ändern, die Sie nicht erwartet haben. Angenommen, Sie verwenden die folgende Abfrage, um die Liste der Filme zu erhalten, sortiert nach Jahr vom neuesten bis zum ältesten, dann nach Bewertung vom höchsten bis zum niedrigsten und schließlich nach Titel in alphabetischer Reihenfolge: SELECT title, year, rating FROM movie ORDER BY 2 DESC, 3 DESC, 1 ASC; Nun stellen wir uns vor, dass wir auch den Namen des Regisseurs in unserer Liste anzeigen möchten. Dies können wir erreichen, indem wir die Abfrage ein wenig abändern: SELECT title, director, year, rating FROM movie ORDER BY 2 DESC, 3 DESC, 1 ASC; Aber wenn wir diese Abfrage ausführen, erhalten wir nicht die richtige Antwort! Das ist das Ergebnis, das wir erhalten: titledirectoryearrating The Enchanted ForestSarah Johnson20227 The Great DiscoveryRobert Green20217 Time TravelersPaul Miller20216 Starship OdysseyMichael Turner20218 UnderwaterMary Johnson20216 Epic JourneyMark Lewis20207 Space ExplorersLisa Adams20227 Mystic IslandJessica White20238 Lost in TimeEmily Roberts20196 The Secret QuestDavid Anderson20227 Es sieht so aus, als ob die Zeilen nicht wie beabsichtigt nach year, rating und title sortiert sind. Dies zeigt die möglichen Fallstricke, wenn man sich auf die Spaltenreihenfolge verlässt, anstatt die Spaltennamen direkt in der ORDER BY Klausel anzugeben. Können Sie den Fehler in unserer geänderten Abfrage erkennen? Das Ergebnis ist falsch, weil wir versucht haben, unsere Zeilen nach den Spalten director, year und title zu sortieren, anstatt nach Jahr, Bewertung und Titel. Die korrekte Abfrage würde wie folgt aussehen: SELECT title, director, year, rating FROM movie ORDER BY 3 DESC, 4 DESC, 1 ASC; Wir können diesen Fehler jedoch verhindern, indem wir einfach die ORDER BY Klausel mit den vollständigen Spaltennamen verwenden: SELECT title, director, year, rating FROM movie ORDER BY year DESC, rating DESC, title ASC; Selbst wenn wir in der Anweisung SELECT Spalten ändern oder verschieben wollen, müssen wir nicht mehr an den Teil ORDER BY denken. Wie Sie sehen, ist es besser, die Namen der Spalten, nach denen Sie sortieren wollen, in der ORDER BY -Klausel explizit zu erwähnen. Dadurch wird Ihre Abfrage einfacher zu lesen und weniger fehleranfällig. Der ORDER BY 1 Trick ist in Ordnung, wenn Sie sich die Daten nur selbst ansehen und die Eingabe beschleunigen wollen. Wenn Sie jedoch vorhaben, die Abfrage in irgendeiner Weise wiederzuverwenden, ist es besser, die vollständige Syntax mit Spaltennamen zu verwenden. Möchten Sie mehr über ORDER BY 1 erfahren? Das ist alles, was wir für heute haben! Wenn Sie mehr über die Verwendung der ORDER BY -Klausel erfahren möchten, lesen Sie unsere Artikel, um zu lernen, wie man ORDER BY im Detail verwendet, und um einige praktische Beispiele für die Verwendung von ORDER BY zu sehen. Und für weitere praktische Übungen sollten Sie sich unseren SQL-Praxis Track ansehen! Tags: ORDER BY