Classement par date et heure avant le regroupement dans MySQL
Pour obtenir l'enregistrement le plus ancien pour chaque nom dans une table où la date et l'heure sont stockées séparément, il est essentiel de résoudre un problème inhérent à l'ordre des opérations de MySQL. Par défaut, GROUP BY s'applique avant ORDER BY, ce qui entraîne un regroupement avant le tri. Cela peut conduire à des résultats inattendus lorsque vous tentez de trier par date et heure avant de regrouper par nom.
Une solution consiste à utiliser une sous-requête :
<code class="sql">SELECT * FROM ( SELECT * FROM table_name ORDER BY date ASC, time ASC ) AS sub GROUP BY name</code>
Dans cette approche, la sous-requête commande le résultats par date et heure par ordre croissant. Le résultat de la sous-requête est ensuite introduit dans la requête externe, qui regroupe les enregistrements par nom. En séparant le tri du regroupement, cette méthode garantit que l'enregistrement le plus ancien de chaque nom est placé en premier.
Cette méthode fournit un moyen logique et clair d'obtenir le résultat souhaité, car la sous-requête se concentre sur le classement des données. tandis que la requête externe gère le regroupement. C'est une technique fiable et efficace pour trier par date et heure avant de regrouper par nom dans MySQL.
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!