Maison > base de données > tutoriel mysql > Explication détaillée des règles de tri multi-champs Order By dans MySQL

Explication détaillée des règles de tri multi-champs Order By dans MySQL

小云云
Libérer: 2017-12-14 11:54:25
original
4325 Les gens l'ont consulté

Vous voulez savoir quelles règles mysql order by sont utilisées pour le tri ? Cet article présente principalement l'exemple de code de la règle de tri multi-champs Order By dans MySQL. L'éditeur pense que c'est assez bon, je vais le partager avec vous ici. Les amis qui en ont besoin pourront s'y référer.

Ordre MySql par champ unique

Créez une table de test comme suit :


CREATE TABLE `a` ( 
 `code` varchar(255) DEFAULT NULL, 
 `name` varchar(255) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Copier après la connexion


INSERT into a values('中一', '我'); 
INSERT into a values('中二', '你'); 
INSERT into a values('高一', '我是'); 
INSERT into a values('高二', '我们'); 
INSERT into a values('高二', '我的');
Copier après la connexion

Le relevé du test est le suivant :


-- hex(): 获取16进制字节码 
select name, hex(name) from a order by name desc
Copier après la connexion

Le résultat est le suivant :

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

Évidemment, le tri dans MySQL est basé sur le bytecode Lorsque le premier mot est le même, comparez le bytecode du deuxième mot, et ainsi de suite

Ordre MySQL par multi-champs

Ce n'est que lorsque vous avez des comparaisons que vous pouvez avoir des idées, et ce n'est que lorsque vous avez des comparaisons que vous pouvez progresser, nous listons donc d'abord le champ unique le tri des résultats par ordre décroissant, puis en regardant l'ordre décroissant des mines de gaz dans les deux champs, nous pouvons en analyser la raison.


-- 按照name进行降序排序 
select * from a order by name desc; 
-- 按照code进行降序排序 
select * from a order by code desc;
Copier après la connexion

Le côté gauche est commandé par nom desc, et le côté droit est le résultat de l'ordre par code desc

codename
高二我的
高一我是
高二我们
中一
中二
codename
高二我们
高二我的
高一我是
中二
中一

Le résultat est très bon Évidemment : lorsqu'un seul champ est trié, l'ordre dans lequel les autres champs apparaissent est naturellement trié.

Regardons le tri multi-champs


-- 按照code, name进行降序排序 
select * from a order by code, name desc;
Copier après la connexion
codename
中一
中二
高一我是
高二我的
高二我们

Les résultats sont les suivants : Tout d'abord, merci vous qq_27837327 et MjayTang, je suis ici Voici un test L'article original disait que le tri SQL n'est pas valide. En fait, commander par code, nom desc équivaut à commander par code asc, nom desc

Après des tests, il a été constaté que l'effet de tri de select * à partir d'une commande par code et nom desc est toujours invalide.

Nous examinons la déclaration suivante


-- 按照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;
Copier après la connexion
codename
高二我的
高二我们
高一我是
中二
中一

En comparant les champs uniques de code et de nom par ordre décroissant, nous peut find , lors de l'utilisation de l'ordre par code desc, nom desc, MySQL triera d'abord par code par ordre décroissant, puis utilisera name pour trier par ordre décroissant en fonction du code.

De plus, nous pouvons également utiliser la fonction contat pour regrouper plusieurs champs et les trier. Mais assurez-vous que le champ ne peut pas être nul. Jetons un coup d'œil à l'instruction SQL et aux résultats de concat.


select * from a order by concat(code,name) desc
Copier après la connexion
code name
高二 我的
高二 我们
高一 我是
中二
中一

Évidemment, à partir de cet exemple de test, l'effet de l'ordre par concat(code, nom) desc est équivalent à l'ordre par code desc, nom desc

Recommandations associées :

Explication détaillée du code d'optimisation de l'ordre par instruction MySQL

Ordre des caractères par in dans MySQL (recommandé)

Commande MySQL par partage d'utilisation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal