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

So invertieren Sie die Implementierung einer Bézierkurve in CSS

Schauen wir uns zunächst einen CSS-Karussell-Anim...

MySQL 8.0.11 Installations-Tutorial unter Windows

Dieser Artikel zeichnet das Installationstutorial...

Zusammenfassung und Analyse häufig verwendeter Docker-Befehle und Beispiele

Inhalt 1. Container-Lebenszyklusmanagement (1) Do...

Analyse der Verschachtelungsregeln von XHTML-Tags

In der XHTML-Sprache wissen wir alle, dass das ul...

Weitere beliebte und kreative Beispiele für Webdesign mit dunklem Hintergrund

Seitendesigns im dunklen Hintergrundstil sind seh...

Detaillierte Erklärung der Concat-bezogenen Funktionen in MySQL

1. concat()-Funktion Funktion: Mehrere Zeichenfol...

jQuery implementiert alle Warenkorbfunktionen

Inhaltsverzeichnis 1. Alles auswählen 2. Erhöhen ...