Maison >base de données >tutoriel mysql >Comment sélectionner maximum DateTime pour chaque maison tout en conservant des informations sur les joueurs dans MySQL?
Récupération efficace des dates et heures maximales avec les données de joueur associées dans MySQL
Cet article montre comment sélectionner la date/heure maximale pour chaque entrée « home » unique dans une table MySQL tout en préservant toutes les informations associées sur le joueur. Le défi consiste à récupérer la valeur datetime maximale pour chaque maison sans perdre d'autres points de données précieux tels que les détails et les ressources des joueurs. Les tentatives précédentes aboutissaient souvent à des données dupliquées ou incorrectes.
La solution optimale implique une sous-requête pour identifier la date/heure maximale pour chaque maison, suivie d'une opération de jointure pour récupérer les informations complètes de la ligne.
La solution
La requête SQL suivante résout efficacement ce problème :
<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 utilise une auto-jointure. La sous-requête interne (groupedtt
) regroupe les données par home
et détermine le maximum datetime
pour chaque groupe. La requête externe joint ensuite ce résultat à la table d'origine (tt
) en utilisant à la fois home
et MaxDateTime
comme conditions de jointure. Cela garantit que seules les lignes représentant la date/heure maximale pour chaque maison sont sélectionnées, tout en conservant toutes les colonnes de la table d'origine. Cette approche évite la duplication des données et garantit l'exactitude des 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!