GROUP BY dimaksudkan untuk digunakan dengan fungsi agregasi, jika tidak maka secara sewenang-wenang memilih satu baris per grup. Solusi Anda (di atas dan dalam jawaban Anda sendiri) berfungsi karena MySQL tampaknya menyimpan baris pertama dari setiap grup, tetapi Anda tidak dijamin bahwa ini akan selalu terjadi.
Anda bisa mendapatkan tanggal komentar terbaru untuk setiap post_id
seperti ini.
select post_id, MAX(datetime) as latest from post_comments group by post_id
Gunakan untuk memilih komentar terbaru:
SELECT t1.* FROM post_comments AS t1
JOIN (
SELECT post_id, MAX(datetime) AS latest FROM post_comments GROUP BY post_id
) AS t2
ON t1.post_id = t2.post_id AND t1.datetime = t2.latest