Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez uniquement la dernière valeur en utilisant group by sur mysql

Utilisez un groupe simple par id_member, mais sélectionnez :

substring(max(concat(from_unixtime(timestamp),attendance)) from 20) as attendance

Cela attache la présence à l'horodatage pour chaque ligne d'un groupe, afin de pouvoir sélectionner l'horodatage/la présence souhaités avec max(), puis extraire uniquement la présence.

Qu'est-ce que concat() renvoie un horodatage formaté de 19 caractères (AAAA-mm-jj HH:MM:SS) avec la présence ajoutée à partir du caractère 20 ; la substring(... from 20) obtient juste la fréquentation du maximum (chaîne) pour le groupe. Vous pouvez supprimer le groupe par et simplement

select concat(from_unixtime(timestamp),attendance), timestamp, attendance

pour avoir une meilleure idée de la façon dont il utilise max pour obtenir la bonne fréquentation.