Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql seleciona a última linha para cada grupo


Primeiro, você não deve escapar do nome da coluna com aspas simples, pois não é uma string literal.
Segundo, você pode fazer uma subconsulta que obtém separadamente a última hora para cada c_id e junte-o novamente com a tabela original para obter as outras colunas.
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
        )