Tout d'abord, vous ne devez pas échapper le nom de la colonne avec un guillemet simple car il ne s'agit pas d'une chaîne littérale.
Deuxièmement, vous pouvez faire une sous-requête qui obtient séparément la dernière heure pour chaque c_id
et rejoignez-la avec la table d'origine pour obtenir les autres colonnes.
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
)