Nếu bạn đang nhóm theo một (hoặc nhiều) cột thì bạn phải làm gì đó với tất cả các cột không được nhóm để truy vấn của bạn có ý nghĩa.
Bạn phải nói những gì bạn muốn thực hiện với tất cả các giá trị được nhóm. Thường là một cái gì đó như SUM (), AVG (), MIN (), MAX (), GROUP_CONCAT ()
Nếu bạn đang nhóm theo m_from, thì bạn sẽ không thể sắp xếp theo m_time, vì tất cả các bản ghi cho m_from sẽ được nhóm lại với nhau và đối với các giá trị không được nhóm, bạn sẽ nhận được câu trả lời tùy ý, vì bạn đã không chỉ định những việc cần làm với nhóm.
Bạn có thể muốn sử dụng một hàm tổng hợp, chẳng hạn như MAX (m_time) để nhận giá trị cao nhất cho m_time, rồi sắp xếp trên đó.
Tôi muốn đề xuất một cái gì đó như thế này.
SELECT MAX(m_id),m_from, MAX(m_time) as latest FROM messages
WHERE m_to='XXX' OR m_from='XXX'
GROUP BY m_from
ORDER BY latest DESC;