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