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

Brug af ORDER BY og GROUP BY sammen

En måde at gøre dette på, der korrekt bruger group by :

select l.* 
from table l
inner join (
  select 
    m_id, max(timestamp) as latest 
  from table 
  group by m_id
) r
  on l.timestamp = r.latest and l.m_id = r.m_id
order by timestamp desc

Sådan fungerer det:

  • vælger det seneste tidsstempel for hver enkelt m_id i underforespørgslen
  • vælger kun rækker fra table der matcher en række fra underforespørgslen (denne operation -- hvor en joinforbindelse udføres, men ingen kolonner er valgt fra den anden tabel, den bruges bare som et filter -- er kendt som en "semijoin" hvis du var nysgerrig)
  • ordrer rækkerne


  1. Sådan sletter du postrevisioner ved hjælp af WP-CLI

  2. Hvordan lukkes inaktive forbindelser i PostgreSQL automatisk?

  3. MySQL Skift brugeradgangskode

  4. Oracle får kontrolsumværdi for en datachunk defineret af en select-klausul