Maison  >  Article  >  base de données  >  La méthode de tri peu connue de MySQL

La méthode de tri peu connue de MySQL

coldplay.xixi
coldplay.xixiavant
2021-02-09 10:01:202663parcourir

<img src="https://img.php.cn/upload/article/202102/09/2021020910000799574.jpg" alt="La méthode de tri peu connue de MySQL" >

Recommandations d'apprentissage gratuites : tutoriel vidéo mysql

ORDER BY 字段名 升序/降序, je crois que les amis qui viennent connaissent cette déclaration de tri, mais lorsqu'ils rencontrent un tri spécial, l'utilisation seule des noms de champs ne peut pas répondre aux besoins. Voici quelques méthodes de tri que j'ai rencontrées :

1. Préparation

Afin de mieux démontrer et comprendre, préparez d'abord un tableau d'élève, ajoutez trois champs : numéro, nom et note, et insérez plusieurs données, comme indiqué sur la figure :
La méthode de tri peu connue de MySQL

2. Tri conditionnel

Exigence 1 : Trier les scores du haut au bas

Les tantes qui vendent des légumes dans la rue le sont toutes Si vous savez taper, utilisez simplement ORDER BY examScore DESC pour le compléter facilement (comme indiqué à gauche ci-dessous).

Exigence 2 : Triez les scores de haut en bas, et ceux qui n'ont pas saisi les scores seront classés en premier

L'expérience client est la plus importante afin de faciliter la deuxième saisie de. scores, cette exigence est purement normale. Pour réaliser ce tri, l'instruction ci-dessus ne peut pas être implémentée, vous devez donc utiliser le tri conditionnel. Déterminez d'abord si le score est vide et attribuez une valeur maximale, puis triez Par exemple, ORDER BY IF(examScore IS NULL,101,examScore) DESC peut également être facilement implémenté (comme. illustré à droite ci-dessous).

tbody>
Exigence Exigence 1 Exigence deux
Déclaration ORDER BY examScore DESC ORDER BY IF(examScore IS NULL,101,examScore) DESC
需求 需求一 需求二
语句 ORDER BY examScore DESC ORDER BY IF(examScore IS NULL,101,examScore) DESC



效果 La méthode de tri peu connue de MySQL La méthode de tri peu connue de MySQL

Effet Insérer la description de l'image ici
3. Tri personnalisé

Les clients sont comme Dieu, et il n'est pas rare qu'ils aient des exigences fantaisistes. Par exemple, il est nécessaire que Zhang. San et Li Si sont classés en tête et les autres étudiants suivent les instructions. Les scores sont triés du haut au bas. Dans ce cas, vous devez utiliser un tri personnalisé. La fonction FIELD de MySQL (renvoie l'index de la chaîne correspondante) peut vous aider à y parvenir.


Déclaration 1 :
ORDER BY FIELD(studentName,'Zhang San','Li Si') ASC, examScore DESC;

Les résultats de la déclaration ci-dessus sont Nous avons disposé Zhang San et Li Si à la fin (comme indiqué à gauche ci-dessous). Il est logique que nous devions disposer Zhang San et Li Si à l'avant et les trier par ordre décroissant.


Déclaration 2 :
ORDER BY FIELD(studentName,'李思','张三') DESC, examScore DESC;

语句 语句一 语句二
效果 La méthode de tri peu connue de MySQL La méthode de tri peu connue de MySQL
Le résultat est exactement comme attendu (comme suit) photo de droite).

Plus tard, j'ai découvert que la fonction FIND_IN_SET peut également être implémentée, et en utilisant 1 million de données pour tester, les performances de FIND_IN_SET sont meilleures.

ORDER BY FIND_IN_SET(studentName,'Li Si,Zhang San') DESC, examScore DESC;

Trier par la première lettre du pinyin chinois.

ORDER BY 字段 ASC
Certains amis sont surpris. Il est facile d'utiliser le ORDER BY 字段 ASC ordinaire pour trier les caractères chinois. Pourquoi est-il si peu connu ?

En fait, lorsque les utilisateurs créent des champs de table à l'aide du jeu de caractères GBK, ils peuvent directement utiliser
语句 ORDER BY studentName ASC ORDER BY CONVERT(studentName USING GBK) ASC
效果 La méthode de tri peu connue de MySQL La méthode de tri peu connue de MySQL
pour résoudre le problème. Afin d'éviter les caractères tronqués, certains utilisateurs utilisent le jeu de caractères utf8, et une simple instruction de tri ne le peut pas. faites n'importe quoi (comme indiqué à gauche), donc dans Il est OK de convertir le champ en GBK lors du tri (comme indiqué à droite ci-dessous).

5. Vous aimerez peut-être aussi
  • Solution d'erreur de connexion à distance MySQL 1130
  • Sauvegarde de synchronisation maître-esclave de la configuration MySQL
Utilisez des filtres pour empêcher l'injection SQL

Recommandations d'apprentissage gratuites associées : base de données mysql

(Vidéo)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer