GROUP BY est destiné à être utilisé avec des fonctions d'agrégation, sinon il sélectionne arbitrairement une ligne par groupe. Votre solution (ci-dessus et dans votre auto-réponse) fonctionne car MySQL semble conserver la première ligne de chaque groupe, mais vous n'êtes pas assuré que cela se produira toujours.
Vous pouvez obtenir la date du dernier commentaire pour chaque post_id
comme ça.
select post_id, MAX(datetime) as latest from post_comments group by post_id
Utilisez-le pour sélectionner le dernier commentaire :
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