HOWTO · MySQL
MySQL-Daten in alphabetischer Reihenfolge sortieren
Dieses Tutorial zeigt, wie Sie Daten auf einem MySQL-Server in alphabetischer Reihenfolge sortieren.
Auf dieser Seite
Um MySQL-Zeilen nach Namen von A bis Z abzurufen, ergänzen Sie Ihre SELECT-Abfrage um ORDER BY gefolgt von der Textspalte. Standardmäßig wird aufsteigend sortiert; mit DESC kehren Sie die Reihenfolge von Z bis A um. Die folgenden Beispiele verwenden die Tabelle student_details und deren Spalte stu_firstName.
Eine Tabelle in MySQL erstellen
Die Beispieltabelle enthält eine ID, einen Vornamen und einen Nachnamen. Erstellen Sie sie mit CREATE TABLE student_details (stu_id INT, stu_firstName VARCHAR(255) DEFAULT NULL, stu_lastName VARCHAR(255) DEFAULT NULL, PRIMARY KEY (stu_id));. Fügen Sie anschließend mit INSERT INTO student_details (stu_id, stu_firstName, stu_lastName) VALUES (1, 'Preet', 'Sanghavi'), (2, 'Rich', 'John'), (3, 'Veron', 'Brow'), (4, 'Geo', 'Jos'), (5, 'Hash', 'Shah'), (6, 'Sachin', 'Parker'), (7, 'David', 'Miller'); die Beispieldatensätze ein. Der Primärschlüssel weist jeder Schülerzeile eine eindeutige ID zu; die Namen werden in den Sortierbeispielen verwendet. Dies sind SQL-Abfragebeispiele. Welche Ergebnisse sie liefern, hängt davon ab, ob Sie sie in einer MySQL-Datenbank ausführen.
Rufen Sie die eingefügten Zeilen mit SELECT * FROM student_details; ab. Da diese Abfrage keine Sortierreihenfolge angibt, kann die Datenbank die Zeilen auch in einer nicht alphabetischen Reihenfolge zurückgeben. Verlassen Sie sich nicht darauf, dass die Einfügereihenfolge eine Sortierung garantiert. Geben Sie die gewünschte Reihenfolge in jeder Abfrage ausdrücklich an.
Daten in einer MySQL-Datenbank alphabetisch sortieren
Die Sortierklausel lautet ORDER BY; ORDER allein reicht nicht aus. Die allgemeine Form ist SELECT columns FROM table_name ORDER BY column_name;. Für das Beispiel rufen Sie nur die Vornamen mit SELECT stu_firstName FROM student_details ORDER BY stu_firstName; ab. Da die aufsteigende Sortierung voreingestellt ist, werden die Namen damit alphabetisch von A bis Z angeordnet. Die Ergebnisfolge lautet David, Geo, Hash, Preet, Rich, Sachin, Veron.
Sie können ASC ausdrücklich angeben, um die Sortierrichtung deutlich zu machen: SELECT stu_firstName FROM student_details ORDER BY stu_firstName ASC;. Die Sortierung ist damit dieselbe wie ohne Richtungsangabe. ASC und DESC sind Richtungsangaben, die in der ORDER BY-Klausel auf den Spaltennamen folgen.
Um die Reihenfolge umzukehren, hängen Sie DESC an: SELECT stu_firstName FROM student_details ORDER BY stu_firstName DESC;. Das Ergebnis lautet Veron, Sachin, Rich, Preet, Hash, Geo, David. Dies ist eine absteigende alphabetische Sortierung von Z in Richtung A. Die Sortierrichtung ändert die Reihenfolge der zurückgegebenen Zeilen, nicht die gespeicherten Werte; die Tabelle selbst wird dadurch nicht umsortiert. Da das Beispiel nur stu_firstName abfragt, enthält das Ergebnis eine Namensspalte. Fügen Sie stu_id oder stu_lastName zur SELECT-Liste hinzu, wenn das sortierte Ergebnis weitere Angaben enthalten soll. Sortiert wird weiterhin nach der Spalte, die auf ORDER BY folgt.
Passen Sie die Abfrage an, indem Sie student_details durch Ihren Tabellennamen und stu_firstName durch die Textspalte ersetzen, nach der Sie sortieren möchten. Lassen Sie diese Spalte in der ORDER BY-Klausel stehen, auch wenn Sie weitere Spalten abrufen, zum Beispiel mit SELECT stu_firstName, stu_lastName FROM student_details ORDER BY stu_firstName;. Verwenden Sie für die Reihenfolge von A bis Z die Standardeinstellung oder ASC und für die umgekehrte Reihenfolge DESC. Die tatsächliche Reihenfolge der Textwerte richtet sich nach der MySQL-Kollation der Spalte. Dieses einfache Beispiel zeigt daher die vorgegebenen englischen Namen und legt keine sprachspezifischen Sortierregeln fest.
Wenn die Abfrage auch Zeilen filtert, setzen Sie ORDER BY nach WHERE. Begrenzen Sie die Zahl der zurückgegebenen Zeilen, folgt LIMIT auf die Sortierklausel. Das Grundmuster lautet beispielsweise SELECT columns FROM table_name WHERE condition ORDER BY column_name DESC LIMIT row_count;. MySQL filtert zunächst die Zeilen, sortiert dann die passenden Ergebnisse und gibt schließlich höchstens die angegebene Anzahl zurück. Die Sortierspalte muss für die Abfrage verfügbar sein; die Richtungsangabe steht hinter dem Spaltennamen.