Erstens sollten Sie den Spaltennamen nicht mit einfachen Anführungszeichen maskieren, da es sich nicht um ein Zeichenfolgenliteral handelt.
Zweitens können Sie eine Unterabfrage durchführen, die separat die neueste Zeit für jede c_id
erhält und verbinden Sie sie wieder mit der ursprünglichen Tabelle, um die anderen Spalten zu erhalten.
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
oder
SELECT a.*
FROM message a
WHERE a.time =
(
SELECT MAX(time) time
FROM message b
WHERE a.c_id = b.c_id
)