Mysql
 sql >> Base de données >  >> RDS >> Mysql

Données de groupe MySQL par heure

Si vous regroupez par une (ou plusieurs) colonne(s), vous devez faire quelque chose pour toutes les colonnes non groupées pour que votre requête ait un sens.

Vous devez dire ce que vous voulez faire avec toutes les valeurs groupées. Habituellement quelque chose comme SUM(), AVG(), MIN(), MAX(), GROUP_CONCAT()

Si vous regroupez par m_from, vous ne pourrez pas trier par m_time, car tous les enregistrements pour m_from seront regroupés, et pour les valeurs non regroupées, vous obtiendrez une réponse arbitraire, puisque vous n'avez pas spécifier quoi faire avec le groupe.

Vous souhaitez probablement utiliser une fonction d'agrégation, telle que MAX(m_time) pour obtenir la valeur la plus élevée pour m_time, puis effectuer un tri sur cette base.

Je suggérerais quelque chose comme.

 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;