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

Mysql sélectionne la dernière ligne pour chaque groupe

Tout d'abord, vous ne devez pas échapper le nom de la colonne avec un guillemet simple car il ne s'agit pas d'une chaîne littérale.
Deuxièmement, vous pouvez faire une sous-requête qui obtient séparément la dernière heure pour chaque c_id et rejoignez-la avec la table d'origine pour obtenir les autres colonnes.

SELECT  a.*
FROM    message a
        INNER JOIN
        (
            SELECT  c_id, MAX(time) time
            FROM    message
            GROUP   BY c_id
        ) b ON a.c_id = b.c_id AND
                a.time = b.time

ou

SELECT  a.*
FROM    message a
WHERE   a.time =
        (
            SELECT  MAX(time) time
            FROM    message b
            WHERE   a.c_id = b.c_id
        )