Maison > base de données > tutoriel mysql > le corps du texte

Comment récupérer la dernière fréquentation de chaque utilisateur à l'aide de la clause GROUP BY de MySQL ?

DDD
Libérer: 2024-10-28 05:15:30
original
135 Les gens l'ont consulté

How to Retrieve the Latest Attendance for Each User Using MySQL's GROUP BY Clause?

Sélection de la dernière valeur à l'aide de Group By dans MySQL

Lorsque vous essayez de récupérer la participation la plus récente de chaque utilisateur à l'aide de la clause GROUP BY de MySQL, vous pouvez rencontrer des cas où la fréquentation initiale est renvoyée au lieu de la dernière valeur souhaitée.

Utilisation d'une sous-requête

Une solution consiste à utiliser une sous-requête pour identifier l'horodatage maximum pour chaque membre et joignez cette sous-requête à la table principale :

<code class="sql">SELECT *
FROM view_event_attendance AS t1
WHERE id_event = 782
AND timestamp = (SELECT MAX(timestamp)
                  FROM view_event_attendance AS t2 
                  WHERE t1.id_member = t2.id_member 
                    AND t1.id_event = t2.id_event 
                  GROUP BY id_event, id_member)
GROUP BY id_event, id_member;</code>
Copier après la connexion

Utilisation de la concaténation et de MAX()

Une approche alternative consiste à concaténer les valeurs d'horodatage et de présence et puis en utilisant MAX() pour sélectionner les valeurs combinées :

<code class="sql">SELECT substring(max(concat(from_unixtime(timestamp),attendance)) from 20) as attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_event,id_member;</code>
Copier après la connexion

Cette méthode renvoie uniquement la dernière valeur de présence pour chaque membre.

Sélection de l'horodatage/présence concaténé

Si vous préférez récupérer l'horodatage et les valeurs de présence concaténés, vous pouvez utiliser la requête suivante :

<code class="sql">SELECT concat(from_unixtime(timestamp),attendance), timestamp, attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_event,id_member;</code>
Copier après la connexion

Considérations sur les performances

Lors de la négociation avec de grands ensembles de données, les sous-requêtes peuvent être coûteuses en termes de calcul. La concaténation des valeurs et l'utilisation de MAX() peuvent offrir de meilleures performances. Cependant, il est important d'évaluer les exigences spécifiques et les caractéristiques de la base de données pour déterminer la solution optimale pour votre cas d'utilisation.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!