Maison >base de données >tutoriel mysql >Comment trier par date et heure avant de regrouper par nom dans MySQL ?

Comment trier par date et heure avant de regrouper par nom dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 22:59:29543parcourir

How to Order by Date and Time Before Grouping by Name in MySQL?

ORDER BY Date et heure avant le nom GROUP BY dans MySQL

Dans MySQL, la clause ORDER BY est appliquée avant la clause GROUP BY. Cependant, dans certains scénarios, les utilisateurs doivent trier les données par champs de date et d'heure avant d'effectuer un GROUP BY sur la colonne de nom.

Considérez le tableau suivant :

name date time
tom 2011-07-04 01:09:52
tom 2011-07-04 01:09:52
mad 2011-07-04 02:10:53
mad 2009-06-03 00:01:01

L'objectif est de récupérez d'abord le nom le plus ancien. La requête suivante échoue :

SELECT *
ORDER BY date ASC, time ASC
GROUP BY name

Cela est dû au fait que GROUP BY est appliqué avant ORDER BY, ce qui entraîne le regroupement des enregistrements portant le même nom avant le tri. En conséquence, l'ordre attendu n'est pas atteint.

Solution :

Pour résoudre ce problème, on peut utiliser l'approche suivante :

SELECT *
FROM (
    SELECT * FROM table_name
    ORDER BY date ASC, time ASC
) AS sub
GROUP BY name

Dans cette requête :

  • La sous-requête crée un ensemble de résultats intermédiaires en classant les lignes d'abord par date, puis par heure croissante.
  • La requête externe sélectionne toutes les colonnes de la sous-requête. et effectue l'opération GROUP BY sur la colonne de nom.

En utilisant cette méthode, GROUP BY est appliqué à l'ensemble de résultats ordonné, garantissant que le nom le plus ancien est récupéré en premier, quelles que soient la date et l'heure. champs.

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