Maison >base de données >tutoriel mysql >Comment puis-je supprimer les lignes en double tout en conservant l'ordre dans une instruction SQL SELECT ?
Utilisation de DISTINCT et ORDER BY dans la même instruction SELECT
Après avoir exécuté une instruction SELECT, récupérer la colonne Category de la table MonitoringJob et ordonner le résultats par la colonne CreationDate par ordre décroissant, la base de données peut renvoyer des valeurs en double. Pour éliminer les doublons tout en conservant l'ordre spécifié, le mot-clé DISTINCT peut être utilisé. Cependant, l'utilisation de DISTINCT seule peut ne pas suffire.
Dans l'exemple fourni, l'utilisation du mot-clé DISTINCT à elle seule ne résoudra pas le problème car la clause ORDER BY repose sur la colonne CreationDate, qui contient des valeurs en double. Pour résoudre ce problème, une fonction d'agrégation telle que MAX() peut être combinée avec le mot-clé DISTINCT pour trier les résultats en fonction d'une colonne spécifique tout en excluant les doublons. De plus, une clause GROUP BY est nécessaire pour créer des catégories uniques basées sur la colonne utilisée dans l'opération DISTINCT.
Une solution appropriée serait :
SELECT DISTINCT Category, MAX(CreationDate) FROM MonitoringJob GROUP BY Category ORDER BY MAX(CreationDate) DESC, Category
Cette instruction modifiée garantira que les doublons sont supprimés en préservant l'ordre souhaité en triant sur la colonne MAX(CreationDate) puis par Catégorie. En conséquence, le résultat souhaité sera obtenu, répertoriant les catégories distinctes par ordre décroissant en fonction de leurs dernières valeurs CreationDate.
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!