MySQL Order By-Codebeispiel für Sortierregeln für mehrere Felder

MySQL Order By-Codebeispiel für Sortierregeln für mehrere Felder

Sag es im Voraus

Aus einer Laune heraus möchte ich wissen, welche Regeln für die Sortierung in MySQL verwendet werden? Okay, kommen wir ohne weitere Umschweife direkt zur Sache.

MySql-Sortierung nach einzelnen Feldern

Erstellen Sie wie folgt eine Testtabelle:

CREATE TABLE `a` ( 
 `code` varchar(255) DEFAULT NULL, 
 `name` varchar(255) STANDARD NULL 
)ENGINE=InnoDB STANDARD-CHARSET=utf8; 
INSERT in einen Wert('Einfg.', 'Einfg.'); 
INSERT in einen Wert('Einfügen', 'Ausführen'); 
INSERT in einen Wert('Einfügung', 'Einfügung'); 
INSERT in einen Wert('Einfügen', 'Einfügen'); 
INSERT in einen Wert('Einfügen', 'Einfügen');
 

Die Testanweisung lautet wie folgt:

-- hex(): Holen Sie sich den hexadezimalen Bytecode „select name“, hex(name) aus einer Reihenfolge nach Name desc

Die Ergebnisse sind wie folgt:

Name hex(Name)
meins E68891E79A84
Ich bin E68891E698AF
uns E68891E4BBAC
ICH E68891
Du E4BDA0

Offensichtlich erfolgt die Sortierung in MySQL auf Bytecode-Basis. Wenn das erste Wort gleich ist, wird der Bytecode des zweiten Wortes verglichen und so weiter.

MySql-Sortierung nach mehreren Feldern

Nur durch Vergleichen können wir Ideen gewinnen und Fortschritte erzielen. Daher listen wir zunächst die absteigenden Sortierergebnisse eines einzelnen Felds auf und sehen uns dann die absteigenden Sortierergebnisse zweier Felder an, damit wir die Gründe analysieren können.

-- In absteigender Reihenfolge nach Namen sortieren. Wählen Sie * aus einer Reihenfolge nach Namen aus. desc; 
-- Nach Code absteigend sortieren. Wählen Sie * aus einer Reihenfolge nach Code desc;

Die linke Seite ist das Ergebnis der Sortierung nach Name desc, und die rechte Seite ist das Ergebnis der Sortierung nach Code desc

Code Name
Zweites Jahr der High School meins
Klasse 1 Ich bin
Zweites Jahr der High School uns
Sekundarstufe 1 ICH
Sekundarstufe 2 Du
Code Name
Zweites Jahr der High School uns
Zweites Jahr der High School meins
Klasse 1 Ich bin
Sekundarstufe 2 Du
Sekundarstufe 1 ICH

Das Ergebnis liegt auf der Hand: Wenn ein einzelnes Feld sortiert wird, wird die Reihenfolge, in der die anderen Felder erscheinen, automatisch sortiert.

Schauen wir uns die Sortierung mehrerer Felder an.

-- In absteigender Reihenfolge nach Code sortieren, Name auswählen * aus einer Reihenfolge nach Code, Name desc;

Code Name
Sekundarstufe 1 ICH
Sekundarstufe 2 Du
Klasse 1 Ich bin
Zweites Jahr der High School meins
Zweites Jahr der High School uns

Die Ergebnisse sind wie folgt: Zunächst einmal vielen Dank an qq_27837327 und MjayTang. Ich habe es hier getestet. Der Originaltext, der besagt, dass diese SQL-Sortierung ungültig ist, ist falsch. Tatsächlich ist order by code, name desc gleichbedeutend mit order by code asc, name desc

Nach dem Testen wurde festgestellt, dass der Sortiereffekt von „select *“ aus einer Reihenfolge nach Code und Name desc immer noch ungültig ist.

Schauen wir uns die folgende Aussage an

-- In absteigender Reihenfolge nach Code und Name sortieren. Wählen Sie * aus einer Reihenfolge nach Code desc, Name desc; 
-- Die Wirkung dieser Anweisung entspricht der folgenden Anweisung, wobei 1 und 2 jeweils dem Code und dem Namen entsprechen 
Wählen Sie Code und Name aus der Reihenfolge 1. absteigend, 2. absteigend aus. 

Code Name
Zweites Jahr der High School meins
Zweites Jahr der High School uns
Klasse 1 Ich bin
Sekundarstufe 2 Du
Sekundarstufe 1 ICH

Beim Vergleich der absteigenden Sortierung einzelner Code- und Namensfelder können wir feststellen, dass MySQL bei der Verwendung von „Order by Code desc, Name desc“ zuerst nach dem Code in absteigender Reihenfolge sortiert und dann den Namen für die absteigende Sortierung basierend auf dem Code in absteigender Reihenfolge verwendet.

Darüber hinaus können wir auch die Funktion contat verwenden, um mehrere Felder zu verketten und sie dann zu sortieren. Stellen Sie jedoch sicher, dass das Feld nicht null sein kann. Werfen wir einen Blick auf die Concat-SQL-Anweisung und die Ergebnisse.

Wählen Sie * aus einer Reihenfolge nach concat(Code, Name) desc 

Code Name
Zweites Jahr der High School meins
Zweites Jahr der High School uns
Klasse 1 Ich bin
Sekundarstufe 2 Du
Sekundarstufe 1 ICH

Offensichtlich ist in diesem Testbeispiel order by concat(code, name) desc gleichbedeutend mit order by code desc, name desc

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für alle hilfreich sein. Bitte lesen Sie: Mehrere wichtige MySQL-Variablen, detaillierte Code-Erklärung der Beziehung zwischen dem Binlog der MySQL-Masterbibliothek (Master-Log) und dem Relay-Log der Slavebibliothek, detaillierte Erklärung des MySQL-Vorbereitungsprinzips usw. Wenn Sie Fragen haben, hinterlassen Sie bitte jederzeit eine Nachricht. Jeder ist herzlich eingeladen, zu kommunizieren und zu diskutieren.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Verwendung und Optimierung von MySQL Order by-Anweisungen
  • Detaillierte Analyse der Order-By- und Group-By-Sequenzprobleme in MySQL
  • So verwenden Sie Union und Order By gleichzeitig in MySQL
  • Einführung in die MySQL Order By-Syntax
  • MySQL Order By-Indexoptimierungsmethode
  • Beispiel für die MySQL-Order-by-Leistungsoptimierungsmethode
  • Detaillierte Erläuterung der Zeichenreihenfolge von MySQL Order by in (empfohlen)
  • Implementierungsanalyse von MySQL ORDER BY
  • MySQL Order By Rand() Effizienzanalyse
  • Zusammenfassung von drei Möglichkeiten zum Implementieren von Rankings in MySQL ohne Verwendung von „order by“

<<:  Videojs+Swiper realisiert Taobao-Produktdetailkarussell

>>:  So ändern Sie die Standardcodierung von MySQL in Linux

Artikel empfehlen

Detaillierte Erklärung von Group By und Having in MySQL

Mit der GROUP BY-Syntax können die Abfrageergebni...

So erstellen Sie YUM in einer Centos7-Umgebung

1. Geben Sie die Konfigurationsdatei der Yum-Quel...

Detaillierte Erklärung von PID und Socket in MySQL

Inhaltsverzeichnis 1. Einführung in die PID-Datei...

So sichern Sie MySQL unter Linux automatisch remote

Vorwort: Ganz gleich, ob wir es für den Eigengebr...

Detaillierte Schritte zur Installation von MySQL mit Cluster-RPM

MySQL-Datenbank installieren a) Laden Sie das MyS...

Versteckter Overhead von Unix/Linux-Forks

Inhaltsverzeichnis 1. Der Ursprung der Gabel 2. F...

DOCTYPE-Element ausführliche Erklärung vollständige Version

1. Übersicht In diesem Artikel wird das DOCTYPE-E...

Detaillierte Erklärung des Unterschieds zwischen Docker-Compose-Ports und Expose

Es gibt zwei Möglichkeiten, Container-Ports in Do...

Führen Sie die Schritte zur Installation von FFmpeg auf dem CentOS-Server aus

Vorwort Die Serversystemumgebung ist: CentOS 6.5 ...

Detailliertes Tutorial zur Installation von Docker auf CentOS 7.5

Einführung in Docker Docker ist eine Open-Source-...