Một cách để thực hiện việc này là sử dụng đúng nhóm 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
Cách thức hoạt động:
- chọn dấu thời gian mới nhất cho từng
m_id
riêng biệt trong truy vấn con - chỉ chọn các hàng từ
table
khớp với một hàng từ truy vấn con (thao tác này - nơi một phép nối được thực hiện, nhưng không có cột nào được chọn từ bảng thứ hai, nó chỉ được sử dụng làm bộ lọc - được gọi là href "bán tham gia" trong trường hợp bạn tò mò) - sắp xếp các hàng