GROUP BY je určen pro použití s agregačními funkcemi, jinak libovolně vybere jeden řádek na skupinu. Vaše řešení (nad a ve vaší vlastní odpovědi) funguje, protože se zdá, že MySQL si ponechává první řádek každé skupiny, ale není zaručeno, že k tomu dojde vždy.
U každého post_id
můžete získat datum posledního komentáře takhle.
select post_id, MAX(datetime) as latest from post_comments group by post_id
Použijte jej k výběru nejnovějšího komentáře:
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