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
)