Đầu tiên, bạn không nên thoát khỏi tên cột với một dấu ngoặc kép vì nó không phải là chuỗi ký tự.
Thứ hai, bạn có thể thực hiện truy vấn con lấy thời gian mới nhất riêng biệt cho mỗi c_id
và nối nó trở lại với bảng ban đầu để lấy các cột khác.
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
hoặc
SELECT a.*
FROM message a
WHERE a.time =
(
SELECT MAX(time) time
FROM message b
WHERE a.c_id = b.c_id
)