Mysql
 sql >> Database >  >> RDS >> Mysql

Dati del gruppo MySQL per ora

Se stai raggruppando per una (o più) colonne, devi fare qualcosa per tutte le colonne non raggruppate affinché la tua query abbia un senso.

Devi dire cosa vuoi fare con tutti i valori raggruppati. Di solito qualcosa come SUM(), AVG(), MIN(), MAX(), GROUP_CONCAT()

Se stai raggruppando per m_from, non sarai in grado di ordinare per m_time, poiché tutti i record per m_from verranno raggruppati e per i valori non raggruppati otterrai una risposta arbitraria, poiché non l'hai fatto specificare cosa fare con il gruppo.

Probabilmente vorrai utilizzare una funzione di aggregazione, come MAX(m_time) per ottenere il valore più alto per m_time, e quindi ordinare su quello.

Suggerirei qualcosa del genere.

 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;