GROUP BY được thiết kế để sử dụng với các chức năng tổng hợp, nếu không, nó sẽ tùy ý chọn một hàng cho mỗi nhóm. Giải pháp của bạn (ở trên và trong phần tự trả lời của bạn) hoạt động vì MySQL dường như giữ hàng đầu tiên của mỗi nhóm, nhưng bạn không được đảm bảo rằng điều này sẽ luôn xảy ra.
Bạn có thể nhận được ngày nhận xét mới nhất cho mỗi post_id
như thế này.
select post_id, MAX(datetime) as latest from post_comments group by post_id
Sử dụng nó để chọn nhận xét mới nhất:
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