Maison > Article > base de données > Comment sélectionner uniquement la dernière valeur d'une table groupée à l'aide de MySQL ?
Problème :
Dans une table contenant plusieurs lignes de présence données pour les utilisateurs, l'objectif est d'obtenir uniquement la dernière valeur de fréquentation de chaque utilisateur, regroupée par ID utilisateur. Cependant, l'utilisation de GROUP BY avec des clauses de commande ne renvoie pas le résultat souhaité.
Pour sélectionner uniquement la dernière valeur de présence, utilisez l'approche suivante :
<code class="sql">SELECT id_member, MAX(timestamp) AS last_timestamp, attendance FROM view_event_attendance WHERE id_event = 782 GROUP BY id_member ORDER BY last_timestamp DESC;</code>
<code class="sql">SELECT id_branch_channel, id_member, attendance, timestamp, id_member FROM view_event_attendance WHERE (id_member, last_timestamp) IN ( SELECT id_member, MAX(timestamp) AS last_timestamp FROM view_event_attendance WHERE id_event = 782 GROUP BY id_member ORDER BY last_timestamp DESC );</code>
<code class="sql">SELECT id_branch_channel, id_member, attendance, timestamp, id_member FROM view_event_attendance AS t1 WHERE timestamp = (SELECT MAX(timestamp) FROM view_event_attendance AS t2 WHERE t1.id_member = t2.id_member AND t1.id_event = t2.id_event);</code>
Remarque : Cette solution évite d'utiliser GROUP BY avec les clauses ORDER BY, ce qui peut s'avérer inefficace pour les grandes tables.
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!