sql >> Databáze >  >> RDS >> Mysql

Data skupiny Mysql podle času

Pokud seskupujete podle jednoho (nebo více) sloupců, musíte udělat něco se všemi neseskupenými sloupci, aby váš dotaz dával smysl.

Musíte říci, co chcete udělat se všemi seskupenými hodnotami. Obvykle něco jako SUM(), AVG(), MIN(), MAX(), GROUP_CONCAT()

Pokud seskupujete podle m_from, pak nebudete moci řadit podle m_time, protože všechny záznamy pro m_from budou seskupeny a pro neseskupené hodnoty dostanete libovolnou odpověď, protože jste určit, co se skupinou má dělat.

Pravděpodobně budete chtít použít agregační funkci, jako je MAX(m_time), abyste získali nejvyšší hodnotu pro m_time, a pak podle ní seřadit.

Navrhoval bych něco jako.

 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. VLOŽTE HODNOTY KAM NEEXISTUJE

  2. Online migrace z MySQL 5.6 Non-GTID na MySQL 5.7 s GTID

  3. Migrace problémů a otázek MySQL UTF8 na UTF8MB4

  4. Spojení 2 tabulek v SELECT (MYSQL/PHP)