Maison >base de données >tutoriel mysql >Comment trier par numéro et placer les NULL en dernier dans MySQL ?

Comment trier par numéro et placer les NULL en dernier dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 20:18:10304parcourir

How to Order by a Number and Place NULLs Last in MySQL?

MySQL : Classement par nombre et valeurs nulles en dernier

Dans les requêtes SQL, le classement des données par champ numérique peut être simple. Toutefois, la gestion des valeurs nulles dans de tels scénarios nécessite une attention particulière. Dans MySQL, par défaut, les valeurs nulles sont traitées comme 0 lors d'un tri avec ASC ou DESC, ce qui peut conduire à des résultats indésirables.

Pour résoudre ce problème, MySQL propose une syntaxe non conventionnelle pour donner la priorité aux valeurs nulles en dernier dans un tri. clause. En plaçant un signe moins (-) avant le nom de la colonne et en inversant l'ordre (ASC à DESC ou vice versa), vous pouvez effectivement inverser le comportement de tri des valeurs nulles.

Par exemple, si vous souhaitez trier un colonne nommée « position » par ordre croissant (sauf pour les valeurs nulles), puis rompez les liens avec « id » par ordre décroissant, vous utiliserez la syntaxe suivante :

SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC

Ceci le classement donnera la séquence suivante :

1, 2, 3, 4, NULL, NULL, NULL

Essentiellement, cette syntaxe inverse le tri de la colonne « position », en plaçant les valeurs nulles en dernier tout en conservant l'ordre souhaité pour les valeurs non nulles.

N'oubliez pas que cette syntaxe n'est pas documentée et peut ne pas être prise en charge dans toutes les versions de MySQL. De plus, c'est toujours une bonne pratique d'examiner attentivement la documentation avant de mettre en œuvre des techniques de tri avancées dans vos requêtes.

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:
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