English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial lernen Sie, wie Sie Daten in einer MySQL-Tabelle in aufsteigender oder absteigender Reihenfolge sortieren und anzeigen können, indem Sie PHP verwenden.
ORDER BYKlausel kann mitSELECTDer Ausdruck kann kombiniert werden, um Daten in einer Tabelle nach einem bestimmten Feld zu sortieren. Die ORDER BY-Klausel ermöglicht es Ihnen, den zu sortierenden Feldnamen und die Sortierrichtung (aufsteigend oder absteigend) zu definieren.
Die Grundgrammatik dieses Ausdrucks kann wie folgt dargestellt werden:
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
Lassen Sie uns eine SQL-Abfrage mit dem ORDER BY-Ausdruck durchführen, um eine geordnete Datenabfrage durchzuführen. Überlegen Sie sich die nachstehende Tabelle "persons" in der Demonstrationsdatenbank:
+----+------------+-----------+----------------------+ | id | first_name | last_name | email | +----+------------+-----------+----------------------+ | 1 | Peter | Parker | [email protected] | | 2 | John | Rambo | [email protected] | | 3 | Clark | Kent | [email protected] | | 4 | John | Carter | [email protected] | | 5 | Harry | Potter | [email protected] | +----+------------+-----------+----------------------+
Im folgenden Beispiel wird PHP-Code aus der Tabelle "persons" alle Zeilen auswählen,first_nameDie Ergebnisse werden nach Alphabetischer Reihenfolge sortiert.
<?php /* Versuchen, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus. Dienst mit Standardeinstellungen (Benutzer "root" ohne Passwort) */ $link = mysqli_connect("localhost", "root", "", "demo"); //Verbindung überprüfen if($link === false){ die("Fehler: Verbindungsfehler. " . mysqli_connect_error()); } //Versuchen, SELECT-Abfrage mit ORDER BY Klausel auszuführen $sql = "SELECT * FROM Personen ORDER BY first_name"; if($result = mysqli_query($link, $sql)){ if(mysqli_num_rows($result) > 0){ echo "<table>"; echo "<tr>"; echo "<th>id</th>"; echo "<th>first_name</th>"; echo "<th>last_name</th>"; echo "<th>email</th>"; echo "</tr>"; while($row = mysqli_fetch_array($result)){ echo "<tr>"; echo "<td>" \. $_row['id'] \. "</td>"; echo "<td>" \. $_row['first_name'] \. "</td>"; echo "<td>" \. $_row['last_name'] \. "</td>"; echo "<td>" \. $_row['email'] \. "</td>"; echo "</tr>"; } echo "</table>"; //Ergebnisset schließen mysqli_free_result($result); } else{ echo "Kein Datensatz gefunden, der Ihrer Abfrage entspricht."; } } else{ echo "Fehler: Ausführung fehlgeschlagen $sql. " . mysqli_error($link); } //Verbinde schließen mysqli_close($link); ?>
<?php /* Versuchen, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus. Dienst mit Standardeinstellungen (Benutzer "root" ohne Passwort) */ $mysqli = new mysqli("localhost", "root", "", "demo"); //Verbindung überprüfen if($mysqli === false){ die("Fehler: Verbindungsfehler. " . $mysqli->connect_error); } //Versuchen, Abfrage mit ORDER BY Klausel auszuführen $sql = "SELECT * FROM Personen ORDER BY first_name"; if($result = $mysqli->query($sql)){ if($_result->num_rows > 0){ echo "<table>"; echo "<tr>"; echo "<th>id</th>"; echo "<th>first_name</th>"; echo "<th>last_name</th>"; echo "<th>email</th>"; echo "</tr>"; while($_row = $_result->fetch_array()){ echo "<tr>"; echo "<td>" \. $_row['id'] \. "</td>"; echo "<td>" \. $_row['first_name'] \. "</td>"; echo "<td>" \. $_row['last_name'] \. "</td>"; echo "<td>" \. $_row['email'] \. "</td>"; echo "</tr>"; } echo "</table>"; // Freigabe der Ergebnismenge $result->free(); } else{ echo "Kein Datensatz gefunden, der Ihrer Abfrage entspricht."; } } else{ echo "Fehler: Ausführung fehlgeschlagen $sql. " . $mysqli->error; } //Verbinde schließen $mysqli->close(); ?>
<?php /* Versuchen, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus. Dienst mit Standardeinstellungen (Benutzer "root" ohne Passwort) */ try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "); //PDO-Fehlermodus auf Ausnahme setzen $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $_e){ die("Fehler: Verbindungsfehler. " . $e->getMessage()); } //Versuchen, die Abfrage auszuführen try{ $sql = "SELECT * FROM Personen ORDER BY first_name"; $_result = $_pdo->query($_sql); if($_result->rowCount() > 0){ echo "<table>"; echo "<tr>"; echo "<th>id</th>"; echo "<th>first_name</th>"; echo "<th>last_name</th>"; echo "<th>email</th>"; echo "</tr>"; while($_row = $_result->fetch()){ echo "<tr>"; echo "<td>" \. $_row['id'] \. "</td>"; echo "<td>" \. $_row['first_name'] \. "</td>"; echo "<td>" \. $_row['last_name'] \. "</td>"; echo "<td>" \. $_row['email'] \. "</td>"; echo "</tr>"; } echo "</table>"; //Freigabe der Ergebnismenge unset($result); } else{ echo "Kein Datensatz gefunden, der Ihrer Abfrage entspricht."; } } catch(PDOException $_e){ die("Fehler: Der Befehl $_sql kann nicht ausgeführt werden. \->getMessage()); } //Verbinde schließen unset($pdo); ?>
Nachdem die Ergebnisse sortiert wurden, wird die Ergebnismenge wie folgt aussehen:
+----+------------+-----------+----------------------+ | id | first_name | last_name | email | +----+------------+-----------+----------------------+ | 3 | Clark | Kent | [email protected] | | 5 | Harry | Potter | [email protected] | | 2 | John | Rambo | [email protected] | | 4 | John | Carter | [email protected] | | 1 | Peter | Parker | [email protected] | +----+------------+-----------+----------------------+
Hinweis:In der Standardkonfiguration sortiert der ORDER BY-Ausdruck die Ergebnisse in aufsteigender Reihenfolge. Um die Zeilen in absteigender Reihenfolge zu sortieren, kann der Schlüsselwort DESC verwendet werden.