GROUP BY soll mit Aggregatfunktionen verwendet werden, ansonsten wird willkürlich eine Zeile pro Gruppe ausgewählt. Ihre Lösung (oben und in Ihrer Selbstantwort) funktioniert, weil MySQL die erste Zeile jeder Gruppe zu behalten scheint, aber Sie können nicht garantieren, dass dies immer geschieht.
Sie können das Datum des letzten Kommentars für jede post_id
abrufen so.
select post_id, MAX(datetime) as latest from post_comments group by post_id
Verwenden Sie es, um den neuesten Kommentar auszuwählen:
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