GROUP BY е предназначена да се използва с агрегиращи функции, в противен случай избира произволно един ред на група. Вашето решение (по-горе и във вашия самостоятелен отговор) работи, защото MySQL изглежда запазва първия ред от всяка група, но не сте гарантирани, че това винаги ще се случва.
Можете да получите датата на последния коментар за всеки post_id
така.
select post_id, MAX(datetime) as latest from post_comments group by post_id
Използвайте го, за да изберете последния коментар:
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