Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dane grupy MySQL według czasu

Jeśli grupujesz według jednej (lub więcej) kolumn, musisz coś zrobić ze wszystkimi niezgrupowanymi kolumnami, aby zapytanie miało sens.

Musisz powiedzieć, co chcesz zrobić ze wszystkimi zgrupowanymi wartościami. Zwykle coś takiego jak SUM(), AVG(), MIN(), MAX(), GROUP_CONCAT()

Jeśli grupujesz według m_from, nie będziesz mógł sortować według m_time, ponieważ wszystkie rekordy dla m_from zostaną zgrupowane razem, a dla wartości niezgrupowanych otrzymasz arbitralną odpowiedź, ponieważ nie określ, co zrobić z grupą.

Prawdopodobnie chcesz użyć funkcji agregującej, takiej jak MAX(m_time), aby uzyskać najwyższą wartość m_time, a następnie posortować według tego.

Proponuję coś takiego.

 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z MySQL w Flask

  2. Wydajność MySQL VIEW dla tabel w połączeniu z UNION ALL

  3. Nie można uzyskać liczby wierszy i pobrać podczas korzystania z przygotowanej instrukcji MySQLi

  4. Przechowywanie szwedzkich znaków w bazie mysql

  5. Typ danych dla adresu URL