Есть несколько извращенный способ для эстетов, суть которого сводится примерно к этому
select * from table as a
left join table as b on a.added<b.added and a.category_id=b.category_id
left join table as c on b.added<c.added and b.category_id=c.category_id
where b.id is not null and c.id is null
Вместо added можно использовать id, собственно так будет быстрее и суть скорее всего будет та же, но уж ключ на added должен быть обязательно.
При всей странности этого селекта, его скорость может удивлять по сравнению с другими способами, но только на небольших таблицах.
Самоочевидный смысл состоит в том, что бы вытянуть «по горизонтали» записи, а потом оставить только те, у которых нет последнего элемента, т.е. те, которые и будут последними.
При всем при этом,
намного более правильным способом является введение доп. поля в таблице, в котором будет флаг, говорящий о том, что эта запись является одной из 2 последних. И обновлять это поле при обновлении данных в таблице.