Maison >base de données >tutoriel mysql >Comment récupérer des lignes avec des valeurs DateTime maximales partitionnées par Home dans MySQL ?
Extraction des valeurs DateTime maximales dans MySQL, regroupées par une autre colonne
Les requêtes de base de données nécessitent souvent de récupérer des données spécifiques en fonction de plusieurs conditions. Une tâche fréquente consiste à sélectionner des lignes contenant la valeur maximale d'une colonne, classées par une autre colonne. Ce guide présente une solution MySQL en utilisant un tableau de performances des joueurs comme exemple.
Considérez une table nommée « TopTen » avec les colonnes « id », « home », « datetime », « player » et « ressource ». L'objectif est de récupérer la ligne avec la dernière entrée (« datetime ») pour chaque emplacement « maison » unique.
Après avoir exploré diverses méthodes, notamment les sous-requêtes et les jointures, la requête la plus efficace s'est avérée être :
<code class="language-sql">SELECT tt.* FROM topten tt INNER JOIN (SELECT home, MAX(datetime) AS MaxDateTime FROM topten GROUP BY home) groupedtt ON tt.home = groupedtt.home AND tt.datetime = groupedtt.MaxDateTime;</code>
Cette requête fonctionne en deux étapes. Il génère d'abord une table temporaire (« groupedtt ») stockant le « datetime » maximum pour chaque « maison » distincte. Par la suite, il rejoint « TopTen » (« tt ») avec « groupedtt » en utilisant à la fois « home » et « datetime » comme conditions de jointure. Cela garantit que seules les lignes avec le « datetime » maximum pour chaque « maison » sont renvoyées.
Cette approche fournit une méthode efficace pour récupérer des lignes avec des valeurs de colonne maximales, partitionnées par une autre colonne dans MySQL, facilitant l'extraction de données ciblées et pertinentes de votre base de données.
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!