Maison >base de données >tutoriel mysql >Comment obtenir des résultats triés uniques en utilisant DISTINCT et ORDER BY dans SQL ?

Comment obtenir des résultats triés uniques en utilisant DISTINCT et ORDER BY dans SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-07 09:26:40462parcourir

How to Get Unique Sorted Results Using DISTINCT and ORDER BY in 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 :

  1. Utilise la fonction d'agrégation MAX() pour trouver la dernière date de création pour chaque catégorie.
  2. Utilise GROUP BY pour regrouper les résultats par catégorie, garantissant ainsi des valeurs uniques.
  3. Trie les résultats d'abord par date de dernière création (ordre décroissant) puis par catégorie.

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!

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