sql >> Base de Datos >  >> RDS >> Mysql

Mysql selecciona la última fila para cada grupo

En primer lugar, no debe escapar del nombre de la columna con comillas simples, ya que no es una cadena literal.
En segundo lugar, puede realizar una subconsulta que obtiene por separado la hora más reciente para cada c_id y únala de nuevo con la tabla original para obtener las otras columnas.

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
        )