sql >> Databasteknik >  >> RDS >> Mysql

Använder ORDER BY och GROUP BY tillsammans

Ett sätt att göra detta som korrekt använder 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å här fungerar det:

  • väljer den senaste tidsstämpeln för varje distinkt m_id i underfrågan
  • väljer bara rader från table som matchar en rad från underfrågan (denna operation -- där en koppling utförs, men inga kolumner väljs från den andra tabellen, den används bara som ett filter -- är känd som en "semijoin" om du var nyfiken)
  • ordnar raderna


  1. Skapa ett databaspostkonto (SSMS)

  2. Oracle Trigger WHEN Klausulexempel

  3. Hantera hög tillgänglighet i PostgreSQL – Del III:Patroni

  4. När ska man använda MyISAM och InnoDB?