Maison >base de données >tutoriel mysql >Comment combiner DISTINCT et ORDER BY pour des résultats uniques et ordonnés en 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!