Details zur Verwendung von „order by“ in MySQL

Details zur Verwendung von „order by“ in MySQL

1. Einleitung

Wenn Sie die select -Anweisung verwenden, können Sie order by der Sortierung der abgefragten Daten kombinieren. Wenn Sie order by nicht verwenden, ist der von MySQL zurückgegebene Datensatz standardmäßig in derselben Reihenfolge wie in der zugrunde liegenden Tabelle. Dies kann mit der Reihenfolge übereinstimmen, in der Sie die Daten zur Tabelle hinzugefügt haben, muss es aber nicht ( MySQL sortiert den Speicher, wenn Sie die Tabelle ändern oder löschen, und die Reihenfolge der Daten ändert sich). Wenn wir also möchten, dass die Daten in der richtigen Reihenfolge vorliegen, sollten wir die Sortiermethode angeben.

2. Haupttext

Bereiten Sie zunächst eine User vor. DDL und Tabellendaten sind wie folgt und können direkt kopiert und verwendet werden.

Namen festlegen utf8mb4;
Setzen Sie FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Tabellenstruktur für Benutzer
-- ----------------------------
DROP TABLE, WENN `Benutzer` EXISTIERT;
CREATE TABLE `Benutzer` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Primärschlüssel',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Benutzername',
  `Alter` int(11) NICHT NULL KOMMENTAR 'Alter',
  `sex` smallint(6) NOT NULL COMMENT 'Geschlecht',
  PRIMÄRSCHLÜSSEL (`id`) MIT BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamisch;

-- ----------------------------
-- Aufzeichnungen des Benutzers
-- ----------------------------
INSERT INTO `user` VALUES (1, 'Benutzername', 18, 1);
INSERT INTO `user` VALUES (2, 'Benutzer', 22, 1);
INSERT INTO `user` VALUES (3, 'Benutzer', 38, 1);
INSERT INTO `user` VALUES (4, 'Benutzer', 25, 1);
INSERT INTO `user` VALUES (5, 'Benutzername', 13, 0);
INSERT INTO `user` VALUES (6, 'Benutzer', 37, 1);
INSERT INTO `Benutzer` VALUES (7, 'Danke', 18, 1);

Setzen Sie FOREIGN_KEY_CHECKS = 1;

Die anfängliche Reihenfolge der Daten ist wie folgt:

mysql> wähle * vom Benutzer aus;
+----+--------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+--------+-----+-----+
| 1 | Pflaume 8 | 18 | 1 |
| 2 | Zhang San | 22 | 1 |
| 3 | Li Si | 38 | 1 |
| 4 | Wang Wu | 25 | 1 |
| 5 | Liu Mazi | 13 | 0 |
| 6 | Tianqi | 37 | 1 |
| 7 | Danke | 18 | 1 |
+----+--------+-----+-----+
7 Zeilen im Satz (0,00 Sek.)

2.1 Sortieren einer einzelnen Spalte

Sehen wir uns zunächst die Verwendung von order by zum Sortieren einer einzelnen Spalte an.

brauchen:

In aufsteigender Reihenfolge nach Benutzeralter sortieren.

Stellungnahme:

Wählen Sie * aus der Benutzerreihenfolge nach Alter aus;

Ergebnis:

mysql> Auswahl * aus der Benutzerreihenfolge nach Alter;
+----+--------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+--------+-----+-----+
| 5 | Liu Mazi | 13 | 0 |
| 1 | Pflaume 8 | 18 | 1 |
| 7 | Danke | 18 | 1 |
| 2 | Zhang San | 22 | 1 |
| 4 | Wang Wu | 25 | 1 |
| 6 | Tianqi | 37 | 1 |
| 3 | Li Si | 38 | 1 |
+----+--------+-----+-----+
7 Zeilen im Satz (0,00 Sek.)

analysieren:

Sie können sehen, dass die Ausgabereihenfolge user Benutzertabelle aufsteigend nach age sortiert ist. Sie können also davon ausgehen, dass die Standardsortiermethode MySQL aufsteigend ist. Außerdem verwende ich das Platzhalterzeichen *, um alle Spalten abzufragen, und gebe age nicht explizit an. Tatsächlich müssen die Spalten, die MySQL „order order by “ folgen, nicht abgefragt werden, wie z select name from user order by age ; dies hat denselben Effekt.

2.2 Mehrere Spalten sortieren

order by kann nicht nur eine einzelne Spalte sortieren, sondern auch mehrere Spalten. Setzen Sie einfach die zu sortierenden Spalten nach order by .

Fügen wir vor dem Testen der Tabelle ein Datenelement mit demselben Alter hinzu.

mysql> in Benutzerwerte (Name, Alter, Geschlecht) einfügen ('李子柒', 18, 1);
Abfrage OK, 1 Zeile betroffen (0,01 Sek.)

brauchen:

Sortieren Sie in aufsteigender Reihenfolge nach Benutzeralter und dann nach Benutzernamen.

Stellungnahme:

Wählen Sie * aus der Benutzerreihenfolge nach Alter, Name;

Ergebnis:

mysql> select * aus der Benutzerreihenfolge nach Alter, Name;
+----+--------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+--------+-----+-----+
| 5 | Liu Mazi | 13 | 0 |
| 1 | Pflaume 8 | 18 | 1 |
| 8 | Li Ziqi | 18 | 1 |
| 7 | Danke | 18 | 1 |
| 2 | Zhang San | 22 | 1 |
| 4 | Wang Wu | 25 | 1 |
| 6 | Tianqi | 37 | 1 |
| 3 | Li Si | 38 | 1 |
+----+--------+-----+-----+
8 Zeilen im Satz (0,00 Sek.)

analysieren:

order by kann auf mehrere Spalten angewendet werden MySQL sortiert die Spalten vollständig entsprechend der Reihenfolge der Spalten nach order by . Beim Sortieren chinesischer Zeichen in MySQL muss jedoch das Problem der Zeichensatzcodierung der Datenbank berücksichtigt werden. Wenn Sie es nicht sehr gut verstehen, wird empfohlen, chinesische Zeichen nicht zu sortieren, da wir in den meisten Fällen Pinyin-Sortierergebnisse benötigen, die jedoch häufig unbefriedigend sind! Darüber hinaus haben wir hier keine Sortiermethode nach Alter und Name, daher ist die Standardeinstellung die aufsteigende Reihenfolge, d. h. zuerst wird in aufsteigender Reihenfolge nach Alter und dann in aufsteigender Reihenfolge nach Name sortiert. Wenn Sie eine absteigende Reihenfolge verwenden müssen, müssen Sie DESC angeben, z. B. „ select id, name, age from user order by age, name desc;

2.3 Sortiermethode

Für die Sortierung nach gibt es zwei Methoden:

ASC -> In aufsteigender Reihenfolge sortieren (Standardsortiermethode)
DESC -> Absteigend sortieren

Hinweis: Wie oben erwähnt, sortiert „order by“ mehrere Spalten, aber die Sortiermethode funktioniert nur für eine Spalte. Wenn Sie beispielsweise die Daten in der Benutzertabelle in absteigender Reihenfolge nach Alter und Name sortieren müssen, sollten Sie für beide Spalten die absteigende Reihenfolge angeben.

mysql> select * aus der Benutzerreihenfolge nach Alter absteigend, Name absteigend;
+----+--------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+--------+-----+-----+
| 3 | Li Si | 38 | 1 |
| 6 | Tianqi | 37 | 1 |
| 4 | Wang Wu | 25 | 1 |
| 2 | Zhang San | 22 | 1 |
| 7 | Danke | 18 | 1 |
| 8 | Li Ziqi | 18 | 1 |
| 1 | Pflaume 8 | 18 | 1 |
| 5 | Liu Mazi | 13 | 0 |
+----+--------+-----+-----+
8 Zeilen im Satz (0,00 Sek.)

Wenn Sie nur die absteigende Sortierung age angeben und name nicht angeben, sortiert MySQL die Daten in absteigender Reihenfolge basierend auf age und führt dann eine standardmäßige aufsteigende Sortierung basierend auf name durch.

mysql> select * aus der Benutzerreihenfolge nach Alter absteigend, Name;
+----+--------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+--------+-----+-----+
| 3 | Li Si | 38 | 1 |
| 6 | Tianqi | 37 | 1 |
| 4 | Wang Wu | 25 | 1 |
| 2 | Zhang San | 22 | 1 |
| 1 | Pflaume 8 | 18 | 1 |
| 8 | Li Ziqi | 18 | 1 |
| 7 | Danke | 18 | 1 |
| 5 | Liu Mazi | 13 | 0 |
+----+--------+-----+-----+
8 Zeilen im Satz (0,00 Sek.)

Es ist ersichtlich, dass sich die Sortiermethode der Daten in den drei Zeilen von Li Ziba, Li Ziqi und Xie Li geändert hat.

2.4 Order by kombiniert mit Limit

Mit order by und „ limit lässt sich die Anzahl der sortierten Datenzeilendatensätze ermitteln. Beispielsweise holen wir uns den ältesten Benutzer aus der Benutzertabelle. Wir können sehen, dass Genosse Li Si 38 Jahre alt ist, was ihn ziemlich alt und zu einem der ältesten Menschen macht.

mysql> Auswahl * aus Benutzerreihenfolge nach Altersabstiegslimit 1;
+----+------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+------+-----+-----+
| 3 | Li Si | 38 | 1 |
+----+------+-----+-----+
1 Zeile im Satz (0,00 Sek.)

limit muss der order by entsprechen. Wenn die Position falsch ist, löst MySQL eine Ausnahme aus.

mysql> Auswahl * ab Benutzerlimit 1, sortiert nach Alter des;
FEHLER 1064 (42000): Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion die richtige Syntax in der Nähe von „order by age des“ in Zeile 1.

Dies ist das Ende dieses Artikels über die Einzelheiten zur Verwendung von „order by“ in MySQL. Weitere Informationen zur Verwendung von „order by“ in MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Eine kurze Erläuterung zu „Group By“ in MySQL
  • Eine kurze Erläuterung der Situationen in MySQL, die zu Indexfehlern führen
  • Das ganz links stehende Übereinstimmungsprinzip des MySQL-Datenbankindex
  • Gemeinsame MySQL-Indexwirksamkeitsbedingungen und Indexungültigkeitsbedingungen
  • Eine kurze Diskussion über die Ungültigkeitserklärung oder implizite Konvertierung von MySQL-Integer- und String-Indizes
  • Installieren Sie MySQL (einschließlich utf8) mit Docker unter Windows/Mac
  • Installation von mysql5.7 und Implementierungsprozess der langfristigen kostenlosen Nutzung von Navicate
  • Detaillierte Erläuterung praktischer Beispiele zur Implementierung einer einfachen Restful-Style-API mit Gin und MySQL
  • Details zur Verwendung regulärer Ausdrücke in MySQL

<<:  Teilen Sie 20 JavaScript-Einzeilencodes

>>:  Methode zum Erstellen eines privaten Docker-Warehouses basierend auf Harbor

Artikel empfehlen

JavaScript zur Implementierung der mobilen Signaturfunktion

In diesem Artikel wird der spezifische JavaScript...

Detailliertes Tutorial zur Installation von MySQL 8.0.13 (rpm) auf Centos7

yum oder rpm? Die Yum-Installationsmethode ist se...

CSS- und HTML- und Front-End-Technologie-Schichtendiagramm

Front-End-Technologieschicht (Das Bild ist etwas e...

Vue implementiert die Bildfrequenzwiedergabe des Karussells

In diesem Artikelbeispiel wird der spezifische Co...

So exportieren und importieren Sie SQL-Dateien unter einem Linux-Befehl

Dieser Artikel beschreibt, wie Sie SQL-Dateien mi...

Beispiel für die Konvertierung von Webpack-Bildern in Base64

URL-Loader herunterladen yarn add -D URL-Lader Mo...

【HTML-Element】Detaillierte Erklärung des Tag-Textes

1. Verwenden Sie grundlegende Textelemente, um In...

Installations- und Konfigurationstutorial von MongoDB unter Linux

MongoDB -Installation Wählen Sie die Installation...