MySQL ORDER BY (Sortierung)-Anweisung

Wir wissen, dass wir aus einer MySQL-Tabelle dieSELECT-Anweisung verwenden, um Daten zu lesen.

Wenn wir die gelesenen Daten sortieren müssen, können wir MySQLsORDER BY-Klausel verwenden, um anzugeben, welches Feld und auf welche Weise sortiert werden soll, und dann die Suchergebnisse zurückgeben.

MySQL ORDER BY (Sortierung)Die Anweisung kann nach den Werten einer oder mehrerer Spalten in aufsteigender (ASC) oder absteigender (DESC) Reihenfolge.

Syntax

Das Folgende ist eine SELECT-Anweisung, die dieORDER BY-Klausel verwendet, um die Abfragedaten zu sortieren und dann die Daten zurückzugeben:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;

Parameter description:

  • column1, column2, ... sind die Namen der Spalten, die Sie auswählen möchten. Wenn Sie*es bedeutet, alle Spalten auszuwählen.
  • table_nameist der Name der Tabelle, aus der Sie Daten abfragen möchten.
  • ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...ist die Klausel, die verwendet wird, um die Sortierreihenfolge anzugeben.ASCbedeutet aufsteigende Reihenfolge (Standard),DESCbedeutet absteigende Sortierung.

Weitere Hinweise:

  • Sie können jedes Feld als Sortierbedingung verwenden, um die sortierten Abfrageergebnisse zurückzugeben.
  • Sie können mehrere Felder zum Sortieren festlegen.
  • Sie können das Schlüsselwort ASC oder DESC verwenden, um festzulegen, ob die Abfrageergebnisse aufsteigend oder absteigend sortiert werden. Standardmäßig wird aufsteigend sortiert.
  • Sie können eine WHERE...LIKE-Klausel hinzufügen, um Bedingungen festzulegen.

Beispiele

Im Folgenden finden Sie einige Beispiele für die Verwendung der ORDER BY-Klausel.

1. Sortierung nach einer einzelnen Spalte:

SELECT * FROM products
ORDER BY product_name ASC;

Die obige SQL-Anweisung wählt alle Produkte aus der Tabelle products aus und sortiert sie nach dem Produktnamen in aufsteigender Reihenfolge (ASC).

2. Sortierung nach mehreren Spalten:

SELECT * FROM employees
ORDER BY department_id ASC, hire_date DESC;

Die obige SQL-Anweisung wählt alle Mitarbeiter aus der Tabelle employees aus, sortiert zunächst nach der Abteilungs-ID in aufsteigender Reihenfolge (ASC) und dann innerhalb derselben Abteilung nach dem Einstellungsdatum in absteigender Reihenfolge (DESC).

3. Verwendung von Zahlen zur Angabe von Spaltenpositionen:

SELECT first_name, last_name, salary
FROM employees
ORDER BY 3 DESC, 1 ASC;

Die obige SQL-Anweisung wählt die Spalten name und salary aus der Tabelle employees aus, sortiert nach der dritten Spalte (salary) in absteigender Reihenfolge (DESC) und dann nach der ersten Spalte (first_name) in aufsteigender Reihenfolge (ASC).

4. Sortierung mithilfe von Ausdrücken:

SELECT product_name, price * discount_rate AS discounted_price
FROM products
ORDER BY discounted_price DESC;

Die obige SQL-Anweisung wählt den Produktnamen und den anhand des Rabattsatzes berechneten rabattierten Preis aus der Tabelle products aus und sortiert nach dem rabattierten Preis in absteigender Reihenfolge (DESC).

Ab MySQL 8.0.16 können Sie NULLS FIRST oder NULLS LAST verwenden, um NULL-Werte zu behandeln:

SELECT product_name, price
FROM products
ORDER BY price DESC NULLS LAST;

Die obige SQL-Anweisung wählt den Produktnamen und den Preis aus der Tabelle products aus und sortiert nach dem Preis in absteigender Reihenfolge (DESC), wobei NULL-Werte zuletzt platziert werden.

Wenn Sie dagegen möchten, dass NULL-Werte zuerst platziert werden, können Sie es so schreiben:

SELECT product_name, price
FROM products
ORDER BY price DESC NULLS FIRST;

Die ORDER BY-Klausel ist ein leistungsstarkes Werkzeug, das Abfrageergebnisse nach unterschiedlichen geschäftlichen Anforderungen sortieren kann. Achten Sie in praktischen Anwendungen darauf, geeignete Spalten und die Sortierreihenfolge auszuwählen, um den erwarteten Sortiereffekt zu erzielen.


Verwenden der ORDER BY-Klausel in der Eingabeaufforderung

Im Folgenden wird die ORDER BY-Klausel in einer SELECT-Anweisung verwendet, um Daten aus der MySQL-Tabelle example_tbl zu lesen:

Beispiel

Probieren Sie das folgende Beispiel aus. Die Ergebnisse werden in aufsteigender und absteigender Reihenfolge sortiert.

SQL-Sortierung

mysql> use EXAMPLE; Datenbank geändert mysql> SELECT * from example_tbl ORDER BY submission_date ASC; +-----------+---------------+---------------+-----------------+ | example_id | example_title | example_author | submission_date | +-----------+---------------+---------------+-----------------+ | 3| LernenJava | EXAMPLE.COM | 2015-05-01 | | 4| LernenPython | EXAMPLE.COM | 2016-03-06 | | 1| LernenPHP| Beispiel |2017-04-12 | | 2| LernenMySQL| Beispiel |2017-04-12 | +-----------+---------------+---------------+-----------------+ 4 Zeilen im Satz (0.01 Sek.) mysql> SELECT * from example_tbl ORDER BY submission_date DESC; +-----------+---------------+---------------+-----------------+ | example_id | example_title | example_author | submission_date | +-----------+---------------+---------------+-----------------+ | 1| LernenPHP| Beispiel |2017-04-12 | | 2| LernenMySQL| Beispiel |2017-04-12 | | 4| LernenPython | EXAMPLE.COM | 2016-03-06 | | 3| LernenJava | EXAMPLE.COM | 2015-05-01 | +-----------+---------------+---------------+-----------------+ 4 Zeilen in Satz (0.01 sec)

Alle Daten aus der Tabelle example_tbl lesen und in aufsteigender Reihenfolge nach dem Feld submission_date sortieren.


Verwendung der ORDER BY-Klausel in PHP-Skripten

Sie können die PHP-Funktion mysqli_query() und denselben SELECT-Befehl mit der ORDER BY-Klausel verwenden, um Daten abzurufen.

Diese Funktion wird verwendet, um den SQL-Befehl auszuführen, und dann alle abgefragten Daten mit der PHP-Funktion mysqli_fetch_array() auszugeben.

Beispiel

Probieren Sie das folgende Beispiel aus. Die abgefragten Daten werden nach dem Feld submission_date in absteigender Reihenfolge sortiert zurückgegeben.

MySQL ORDER BY Test:

<?php $dbhost = 'localhost'; //Hostadresse des MySQL-Servers $dbuser = 'root'; //MySQL-Benutzername $dbpass = '123456'; //MySQL-Benutzerpasswort $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Verbindung fehlgeschlagen:' . mysqli_error($conn)); } //Legen Sie die Kodierung fest, um verstümmelte chinesische Zeichen zu vermeiden. mysqli_query($conn , "set names utf8"); $sql = 'SELECT example_id, example_title, example_author, submission_date FROM example_tbl ORDER BY submission_date ASC'; mysqli_select_db( $conn, 'EXAMPLE' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('Daten können nicht gelesen werden:' . mysqli_error($conn)); } echo '<h2>Beispiel MySQL ORDER BY Test<h2>'; echo '<table border="1"><tr><td>Tutorial-ID</td><td>Titel</td><td>Autor</td><td>Einreichungsdatum</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) { echo "<tr><td> {$row['example_id']}</td> ". "<td>{$row['example_title']} </td> ". "<td>{$row['example_author']} </td> ". "<td>{$row['submission_date']} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

Das Ausgabeergebnis ist in der folgenden Abbildung dargestellt:

Andere Erweiterungen