Om du grupperar efter en (eller flera) kolumner måste du göra något med alla icke-grupperade kolumner för att din fråga ska vara meningsfull.
Du måste säga vad du vill göra med alla grupperade värden. Vanligtvis något som SUM(), AVG(), MIN(), MAX(), GROUP_CONCAT()
Om du grupperar efter m_from, kommer du inte att kunna sortera efter m_tid, eftersom alla poster för m_from kommer att grupperas tillsammans, och för de icke-grupperade värdena får du ett godtyckligt svar, eftersom du inte gjorde det. ange vad som ska göras med gruppen.
Du vill förmodligen använda en aggregatfunktion, som MAX(m_time) för att få det högsta värdet för m_time, och sedan sortera på det.
Jag skulle föreslå något i stil med.
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;