Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL seleziona l'ultima riga per ogni gruppo

Innanzitutto, non dovresti sfuggire al nome della colonna con virgolette singole poiché non è una stringa letterale.
In secondo luogo, puoi eseguire sottoquery che ottengono separatamente l'ultima ora per ogni c_id e uniscilo di nuovo alla tabella originale per ottenere le altre colonne.

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

o

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