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
)