24th Nov 2022 7 Leseminuten Wie man Datensätze mit der ORDER BY-Klausel sortiert Dorota Wdzięczna ORDER BY Inhaltsverzeichnis ORDER BY-Syntax Verwendung von ORDER BY mit einer Spalte Verwendung von ORDER BY mit mehreren Spalten Ausdrücke in der ORDER BY-Klausel Verwendung von ORDER BY mit CASE Sortieren mit dem CASE-Ausdruck Sortieren mit CASE und einer Spalte Relationale Datenbanken speichern Datensätze nicht in alphabetischer, numerischer, aufsteigender oder in einer anderen Reihenfolge. Die einzige Möglichkeit, Datensätze in der Ergebnismenge zu ordnen, ist die ORDER BY Klausel. Sie können diese Klausel verwenden, um Zeilen nach einer Spalte, einer Liste von Spalten oder einem Ausdruck zu ordnen. Sie können Zeilen auch mithilfe des CASE-Ausdrucks ordnen. In diesem Beitrag werfen wir einen Blick auf die ORDER BY Klausel - wie man sie schreibt, wie sie funktioniert und was sie bewirkt. ORDER BY-Syntax Die ORDER BY Klausel wird verwendet, um Zeilen in einer Ergebnistabelle zu sortieren. Hier ist ihre Syntax: SELECT list_column FROM table ORDER BY column ; Verwendung von ORDER BY mit einer Spalte Das folgende Beispiel zeigt Datensätze in der Tabelle furniture_data die in aufsteigender Reihenfolge nach der Spalte furniture sortiert wurden. Aufsteigend ist die Standardsortierreihenfolge in einer ORDER BY Klausel. SELECT id, furniture, points FROM furniture_data ORDER BY furniture ; Wie Sie sehen können, steht die ORDER BY Klausel nach der FROM Anweisung. Nach dem Schlüsselwort ORDER BY folgt die Spalte oder die Spalten, nach denen die Zeilen sortiert werden sollen. Mit anderen Worten, Sie teilen der Datenbank mit: "Nehmen Sie die Spalten id, furniture und points aus der Tabelle furniture_data Tabelle und ordne sie nach der Spalte furniture". Sie können angeben, wie die Ergebnisse sortiert werden sollen, entweder in aufsteigender (A-Z) oder absteigender (Z-A) Reihenfolge. Für die aufsteigende Reihenfolge können Sie das Schlüsselwort ASC verwenden, aber es ist nicht notwendig. Für die absteigende Reihenfolge müssen Sie das Schlüsselwort DESC verwenden. Nach dem Spaltennamen können Sie also das Schlüsselwort ASC oder DESC einfügen. Das folgende Beispiel sortiert die Daten in aufsteigender Reihenfolge nach der Spalte "furniture": SELECT id, furniture, points FROM furniture _data ORDER BY furniture ASC ; Denken Sie daran, dass Sie das Schlüsselwort ASC nicht brauchen, um eine aufsteigende Sortierung anzugeben; SQL tut dies standardmäßig. Wie funktioniert die GROUP BY-Klausel von SQL, wenn #NULL-Werte beteiligt sind? Finden Sie es heraus! https://t.co/yaTfYvwVix pic.twitter.com/ELx0AiLnnN - Vertabelo (@Vertabelo) April 29, 2017 Als nächstes sehen Sie sich die Daten in der Tabelle furniture_data an, die wir in den verbleibenden Beispielen dieses Artikels verwenden werden: id furniture points price 1 chair 5 120 2 sofa 8 950 3 table 2 1350 4 bookcase 5 200 5 bed 3 2000 So sieht es nach einer aufsteigenden Sortierung nach der Spalte furniture aus: id furniture points 5 bed 3 4 bookcase 5 1 chair 5 2 sofa 8 3 table 2 Was ist mit einer absteigenden Sortierung nach der gleichen Spalte? SELECT id, furniture, points FROM furniture _data ORDER BY furniture DESC ; Hier ist das Ergebnis für die absteigende Sortierung: id furniture points 3 table 2 2 sofa 8 1 chair 5 4 bookcase 5 5 bed 3 Verwendung von ORDER BY mit mehreren Spalten In den letzten Beispielen wurden die Daten nach nur einer Spalte sortiert. Wenn jedoch einige Datensätze in dieser Spalte identische Werte haben, könnte dies die Anzeige der Ergebnisse beeinflussen. In diesem Fall müssen wir die Zeilen anhand einer zusätzlichen Spalte sortieren. Das nächste Beispiel zeigt, wie man mehr als eine Spalte zur Sortierung von Daten verwenden kann: SELECT id, furniture, points FROM furniture _data ORDER BY point DESC , furniture; In diesem Beispiel werden die Zeilen in absteigender Reihenfolge nach der Spalte points sortiert. Wenn zwei oder mehr Datensätze denselben Wert haben, verwendet die Datenbank die Spalte furniture, um diese Datensätze in aufsteigender Reihenfolge zu sortieren. Hier sind die Ergebnisse: id furniture points 2 sofa 8 4 bookcase 5 1 chair 5 5 bed 3 3 table 2 Die Zeilen "Bücherregal" und " Stuhl" haben die gleiche Punktzahl (5), also werden auch diese Zeilen nach den Werten in der Spalte furniture sortiert. Die Sortierung ist alphabetisch, so dass die Bücherregal Zeile wird vor der Stuhl Zeile. Ausdrücke in der ORDER BY-Klausel Manchmal müssen wir Datensätze nach dem Ergebnis einer Berechnung und nicht nach den Spaltenwerten sortieren. Stellen Sie sich vor, Sie möchten die Daten aus der Tabelle furniture_data Tabelle abgerufenen Daten nach der Höhe eines Preisnachlasses sortieren. Sie würden den Rabatt berechnen, indem Sie den Wert in der Spalte points mit 120 multiplizieren und dann durch 100 dividieren. So würde dies im SQL-Code aussehen: SELECT id, furniture, points, price FROM furniture _data ORDER BY price-120*points/100; Hier ist das Ergebnis: id furniture points price 1 chair 5 120 4 bookcase 5 200 2 sofa 8 950 3 table 2 1350 5 bed 3 2000 Verwendung von ORDER BY mit CASE Sortieren mit dem CASE-Ausdruck Neben der Sortierung von Zeilen anhand einer oder mehrerer Spalten können Sie ORDER BY auch mit einfachen und gesuchten CASE-Ausdrücken verwenden. (Um mehr über CASE zu erfahren, lesen Sie diesen Artikel.) Warum CASE in einer ORDER BY Klausel verwenden? Vielleicht möchten Sie noch genauer festlegen, wie die Zeilen sortiert werden sollen, oder Sie möchten nur einige der Zeilen abrufen (d. h. diejenigen, die bestimmte Bedingungen erfüllen). Wenn Sie einer SELECT-Anweisung eine IF-THEN-Logik hinzufügen müssen, ist CASE da, um zu helfen -> https://t.co/EMwAZDO2T5 #SQL #SQLServer #SQLTip pic.twitter.com/dPHNp6IsjS - Vertabelo (@Vertabelo) May 8, 2017 Das folgende Beispiel zeigt, wie Sie CASE verwenden können, um Daten auf eine bestimmte Weise zu sortieren. Stellen Sie sich vor, Sie wollen Daten aus der Tabelle furniture_data abrufen möchten, aber die Zeilen mit einer geraden Anzahl von Punkten oben in den Ergebnissen angezeigt werden sollen. Sie können dies nicht mit Spalten als Sortierkriterien erreichen; Sie brauchen CASE. Unten ist ein Beispiel für den entsprechenden Code zu sehen: SELECT id, furniture, points FROM furniture _data ORDER BY CASE WHEN points%2=0 THEN 1 ELSE 2 END ; So sehen die Ergebnisse aus: id furniture points 2 sofa 8 3 table 2 1 chair 5 4 bookcase 5 5 bed 3 Wie hat der Ausdruck CASE dies erreicht? Er prüft, ob die Zahl in der Spalte points durch 2 geteilt werden kann, ohne dass ein Rest übrig bleibt. Wenn ja, wurde ein 1 zurückgegeben und die Zeile wurde im oberen Teil der Ergebnisse angezeigt. Wenn nicht, wurde ein 2 zurückgegeben, und die Zeile wurde im unteren Teil der Ergebnisse angezeigt. Wenn Sie möchten, dass die Möbeldatensätze mit einer ungeraden Anzahl von Punkten zuerst aufgelistet werden, müssen Sie nur die Sortierreihenfolge auf absteigend ändern: SELECT id, furniture, points FROM furniture _data ORDER BY CASE WHEN points%2=0 THEN 1 ELSE 2 END DESC ; Das Ergebnis: id furniture points 1 chair 5 4 bookcase 5 5 bed 3 2 sofa 8 3 table 2 Sortieren mit CASE und einer Spalte Sie können zusammen mit der Anweisung CASE auch andere Dinge verwenden, z. B. eine Spalte oder sogar einen anderen CASE Ausdruck. Sehen Sie sich das folgende Beispiel an, in dem ein CASE Ausdruck und eine Spalte verwendet werden, um Daten zu sortieren. SELECT id, furniture, points FROM furniture _data ORDER BY CASE WHEN points%2=0 THEN 1 ELSE 2 END , furniture DESC ; Zunächst werden die Datensätze nach dem CASE Ausdruck geordnet, der prüft, ob die points Werte gerade oder ungerade sind. Wie zuvor werden die geraden Zahlen zuerst aufgeführt. Aber wir wollen die Gruppen noch mehr sortieren. Daher verwenden wir die Spalte furniture, um die Ergebnisse innerhalb der CASE zu ordnen. Da wir das Schlüsselwort DESC verwendet haben, werden die Zeilen in umgekehrter alphabetischer Reihenfolge aufgeführt. Hier sind die Ergebnisse: id furniture points 3 table 2 2 sofa 8 1 chair 5 4 bookcase 5 5 bed 3 Vergleichen Sie diese Ergebnisse mit denen unten, die nur den Ausdruck CASE verwenden: id furniture points 2 sofa 8 3 table 2 1 chair 5 4 bookcase 5 5 bed 3 Möchten Sie mehr erfahren? Dieser Artikel hat Ihnen nur den Einstieg in die ORDER BY Klausel ermöglicht. Am besten lernen Sie mehr, wenn Sie sie selbst ausprobieren, indem Sie den SQL-Abfrage kurs der Vertabelo Academy nutzen. Tags: ORDER BY