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