Heim  >  Artikel  >  Datenbank  >  Ausführliche Erläuterung der Sortierregeln für mehrere Felder in MySQL

Ausführliche Erläuterung der Sortierregeln für mehrere Felder in MySQL

小云云
小云云Original
2017-12-14 11:54:254216Durchsuche

Möchten Sie wissen, nach welchen Regeln die MySQL-Reihenfolge zum Sortieren verwendet wird? In diesem Artikel wird hauptsächlich das Codebeispiel der Sortierregel „Order By“ in MySQL vorgestellt. Ich hoffe, es kann allen helfen.

MySql-Reihenfolge nach Einzelfeld

Erstellen Sie eine Testtabelle wie folgt:


CREATE TABLE `a` ( 
 `code` varchar(255) DEFAULT NULL, 
 `name` varchar(255) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT into a values('中一', '我'); 
INSERT into a values('中二', '你'); 
INSERT into a values('高一', '我是'); 
INSERT into a values('高二', '我们'); 
INSERT into a values('高二', '我的');

Die Testaussage lautet wie folgt:


-- hex(): 获取16进制字节码 
select name, hex(name) from a order by name desc

Das Ergebnis lautet wie folgt:

name hex(name)
我的 E68891E79A84
我是 E68891E698AF
我们 E68891E4BBAC
E68891
E4BDA0

Natürlich basiert die Sortierung in MySQL auf dem Bytecode. Wenn das erste Wort dasselbe ist, vergleichen Sie den Bytecode des zweiten Wortes und so weiter

MySql-Reihenfolge nach mehreren Feldern

Nur wenn Sie Vergleiche haben, können Sie Ideen haben, und nur wenn Sie Vergleiche haben, können Sie Fortschritte machen, daher listen wir zuerst das Einzelfeld auf Die Ergebnisse werden in absteigender Reihenfolge sortiert. Wenn wir uns dann die absteigende Reihenfolge der Gasminen in den beiden Feldern ansehen, können wir den Grund analysieren.


-- 按照name进行降序排序 
select * from a order by name desc; 
-- 按照code进行降序排序 
select * from a order by code desc;

Die linke Seite ist die Reihenfolge nach Name absteigend und die rechte Seite ist das Ergebnis der Reihenfolge nach Code absteigend

code name
高二 我的
高一 我是
高二 我们
中一
中二
code name
高二 我们
高二 我的
高一 我是
中二
中一

Das Ergebnis ist sehr gut. Offensichtlich: Wenn ein einzelnes Feld sortiert wird, wird die Reihenfolge, in der andere Felder erscheinen, natürlich sortiert.

Werfen wir einen Blick auf die Mehrfeldsortierung


-- 按照code, name进行降序排序 
select * from a order by code, name desc;
code name
中一
中二
高一 我是
高二 我的
高二 我们

Die Ergebnisse sind wie folgt: Zunächst einmal vielen Dank Sie qq_27837327 und MjayTang, ich bin hier. Hier ist ein Test. Der ursprüngliche Artikel besagt, dass die SQL-Sortierung ungültig ist. Tatsächlich entspricht die Sortierung nach Code, Name absteigend der Sortierung nach Code aufsteigend, Name absteigend.

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

Wir betrachten die folgende Aussage


-- 按照code, name进行降序排序 
select * from a order by code desc, name desc; 
-- 该语句的效果等同于下面的语句, 其中1、2分别对应的是code、name 
select code, name from a order by 1 desc, 2 desc;
code name
高二 我的
高二 我们
高一 我是
中二
中一

Vergleichen wir die einzelnen Felder Code und Name in absteigender Reihenfolge Wenn Sie „Reihenfolge nach Code desc“ und „Name desc“ verwenden, sortiert MySQL zuerst nach Code in absteigender Reihenfolge und verwendet dann den Namen, um in absteigender Reihenfolge basierend auf dem Code zu sortieren.

Darüber hinaus können wir auch die Contat-Funktion verwenden, um mehrere Felder zusammenzufügen und zu sortieren. Stellen Sie jedoch sicher, dass das Feld nicht null sein darf. Werfen wir einen Blick auf die SQL-Anweisung und die Ergebnisse von concat.


select * from a order by concat(code,name) desc
code name
高二 我的
高二 我们
高一 我是
中二
中一

Aus diesem Testbeispiel ist offensichtlich, dass der Effekt der Reihenfolge nach concat(code, name) desc äquivalent zu order by code desc, name desc ist

Verwandte Empfehlungen:

Detaillierte Erläuterung des Optimierungscodes für die Reihenfolge nach Anweisung in MySQL

Reihenfolge der Zeichen nach in in MySQL (empfohlen)

MySQL-Reihenfolge nach Nutzungsfreigabe

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Sortierregeln für mehrere Felder in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn