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!