Един от начините да направите това, който правилно използва 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
Как работи това:
- избира най-новото времеви печат за всеки отделен
m_id
в подзаявката - избира само редове от
table
които съвпадат с ред от подзаявката (тази операция - където се извършва присъединяване, но не са избрани колони от втората таблица, тя просто се използва като филтър - е известна като "semijoin" в случай, че сте били любопитни) - подрежда редовете