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!