IDは増分です。それを使用してください。
select ...
from
.....
where id post_in
(select max(post_id) from table group by category)
カテゴリがいくつあるかがわかっている場合は、
を使用してさらに適切に行うことができます。where post id in
(select post_id from table where category=1 order by time desc limit 1
union
select post_id from table where category=2 order by time desc limit 1
union
select post_id from table where category=3 order by time desc limit 1
union
select post_id from table where category=4 order by time desc limit 1)
または、完璧な結果が得られるがクエリが非常に遅いパラメータを使用することもできます
select * from
(select
@rn:=if(@prv=category_id, @rn+1, 1) as rId,
@prv:=category_id as category_id,
timestamp,
other columns
from (select category_id, timestamp, other columns from ... )a
join
(select @prv:=0, @rn:=0)tmp
order by
category_id , timestamp desc) a
where rid<=1