GROUP BY ma być używany z funkcjami agregacji, w przeciwnym razie arbitralnie wybiera jeden wiersz na grupę. Twoje rozwiązanie (powyżej iw odpowiedzi własnej) działa, ponieważ MySQL wydaje się przechowywać pierwszy wiersz każdej grupy, ale nie masz gwarancji, że tak się stanie zawsze.
Możesz uzyskać datę ostatniego komentarza dla każdego post_id
w ten sposób.
select post_id, MAX(datetime) as latest from post_comments group by post_id
Użyj go, aby wybrać najnowszy komentarz:
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