Salah satu cara untuk melakukan ini dengan benar menggunakan 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
Cara kerjanya:
- memilih stempel waktu terbaru untuk setiap
m_id
yang berbeda di subkueri - hanya memilih baris dari
table
yang cocok dengan baris dari subkueri (operasi ini -- di mana penggabungan dilakukan, tetapi tidak ada kolom yang dipilih dari tabel kedua, itu hanya digunakan sebagai filter -- dikenal sebagai "semijoin" jika Anda penasaran) - mengurutkan baris