Maison >base de données >tutoriel mysql >Comment combiner DISTINCT et ORDER BY pour des résultats uniques et ordonnés en SQL ?

Comment combiner DISTINCT et ORDER BY pour des résultats uniques et ordonnés en SQL ?

DDD
DDDoriginal
2025-01-07 09:06:42257parcourir

How to Combine DISTINCT and ORDER BY for Unique, Ordered Results in SQL?

Comment utiliser DISTINCT et ORDER BY dans la même instruction SELECT

Les requêtes exécutées renvoient souvent des données en double et commandent ces données à l'aide de ORDER BY à lui seul, cela ne suffira peut-être pas à supprimer ces doublons. Cependant, en combinant DISTINCT et ORDER BY dans une seule instruction SELECT, les développeurs peuvent éliminer efficacement les doublons tout en conservant l'ordre souhaité.

Pour résoudre ce problème, la clause ORDER BY doit inclure les colonnes utilisées dans la clause SELECT. Lorsque DISTINCT est utilisé, il regroupe les résultats en fonction des colonnes spécifiées, supprimant ainsi les doublons. Cependant, si la clause ORDER BY fait référence à des colonnes non incluses dans DISTINCT, le classement regroupera de manière incorrecte toutes les lignes ayant la même valeur dans les colonnes SELECT, entraînant des résultats en double.

Solution :
Pour résoudre Pour résoudre ce problème, la requête doit utiliser une fonction d'agrégation, telle que MAX(), pour trier sur la colonne souhaitée (CreationDate dans ce cas). De plus, une clause GROUP BY est ajoutée pour regrouper les résultats par colonnes DISTINCT (Catégorie). Cette combinaison garantit la suppression des doublons tout en préservant l'ordre des résultats. La requête modifiée serait la suivante :

SELECT DISTINCT Category, MAX(CreationDate)
FROM MonitoringJob
GROUP BY Category
ORDER BY MAX(CreationDate) DESC, Category

Cette requête révisée produira les résultats souhaités, en éliminant les doublons de la catégorie et en les classant par CreationDate par ordre décroissant, suivi de Category.

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