Maison  >  Article  >  base de données  >  Comment récupérer la dernière valeur d'un groupe dans MySQL à l'aide de « GROUP BY » ?

Comment récupérer la dernière valeur d'un groupe dans MySQL à l'aide de « GROUP BY » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 06:45:02350parcourir

How to Retrieve the Last Value for a Group in MySQL Using `GROUP BY`?

Dans MySQL, la sélection de la dernière valeur pour un groupe de lignes donné à l'aide de GROUP BY peut être réalisée, mais pas directement. La technique utilisée pour y parvenir consiste à d'abord concaténer la colonne souhaitée avec un identifiant unique, tel qu'un horodatage, avant d'effectuer le regroupement.

Considérez la requête suivante :

<code class="sql">SELECT id_branch_channel, id_member, MAX(CONCAT(timestamp, attendance)) AS last_attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_branch_channel, id_member;</code>

Dans cette requête, nous concaténons les colonnes d’horodatage et de présence pour chaque ligne en une seule chaîne. Cela nous permet de capturer la dernière fréquentation enregistrée associée à chaque paire unique de id_branch_channel et id_member. La fonction MAX() est ensuite utilisée pour sélectionner la valeur maximale de la chaîne concaténée, nous donnant ainsi la dernière fréquentation enregistrée pour chaque groupe.

Une fois la dernière fréquentation identifiée, nous pouvons utiliser la SUBSTRING() fonction pour extraire uniquement la valeur de présence de la chaîne concaténée. Ceci peut être réalisé avec la requête suivante :

<code class="sql">SELECT id_branch_channel, id_member, SUBSTRING(last_attendance, 19) AS attendance
FROM (
    SELECT id_branch_channel, id_member, MAX(CONCAT(timestamp, attendance)) AS last_attendance
    FROM view_event_attendance
    WHERE id_event = 782
    GROUP BY id_branch_channel, id_member
) AS subquery;</code>

Cette requête utilise une sous-requête pour effectuer le regroupement et la concaténation initiaux, puis sélectionne uniquement la colonne de présence dans le résultat à l'aide de la fonction SUBSTRING().

En utilisant cette technique, nous pouvons sélectionner efficacement la dernière participation enregistrée pour chaque groupe de lignes dans la table view_event_attendance.

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!

Déclaration:
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