Maison >base de données >tutoriel mysql >Comment obtenir des résultats triés uniques en utilisant DISTINCT et ORDER BY dans SQL ?
Combiner DISTINCT et ORDER BY pour des résultats uniques
Face à un ensemble de données contenant des valeurs en double, utiliser DISTINCT pour supprimer les doublons peut être essentiel pour obtenir des résultats uniques. Cependant, lorsque le tri est également requis, l'utilisation de ORDER BY dans la même instruction SELECT peut poser un défi.
Pour résoudre ce problème, considérez la requête suivante :
SELECT Category FROM MonitoringJob ORDER BY CreationDate DESC
Cette requête récupère des données à partir de la table MonitoringJob, en classant les résultats par ordre décroissant selon la colonne CreationDate. Le résultat souhaité est une liste de catégories uniques, triées par date de dernière création. Cependant, la requête produit des valeurs en double.
Une tentative pour résoudre ce problème pourrait consister à utiliser DISTINCT :
SELECT DISTINCT Category FROM MonitoringJob ORDER BY CreationDate DESC
Malheureusement, cette requête échoue car DISTINCT ne fonctionne pas avec ORDER BY dans un seul
Pour résoudre ce problème, une fonction d'agrégation et une clause GROUP BY peuvent être utilisées :
SELECT DISTINCT Category, MAX(CreationDate) FROM MonitoringJob GROUP BY Category ORDER BY MAX(CreationDate) DESC, Category
Ceci requête :
Cette approche combine la puissance de DISTINCT pour éliminer les doublons avec la fonctionnalité ORDER BY pour trier les données, vous donnant des résultats uniques triés dans l'ordre souhaité.
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!