Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Dados do grupo MySQL por hora


Se você estiver agrupando por uma (ou mais) coluna, precisará fazer algo em todas as colunas não agrupadas para que sua consulta faça sentido.

Você tem que dizer o que quer que seja feito com todos os valores agrupados. Normalmente algo como SUM(), AVG(), MIN(), MAX(), GROUP_CONCAT()

Se você estiver agrupando por m_from, não poderá classificar por m_time, pois todos os registros de m_from serão agrupados e, para os valores não agrupados, você obterá uma resposta arbitrária, pois não especificar o que fazer com o grupo.

Você provavelmente deseja usar uma função de agregação, como MAX(m_time) para obter o valor mais alto para m_time e, em seguida, classificá-lo.

Eu sugeriria algo como.
 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;