Вы не указываете, какую версию MySQL вы используете, поэтому я предполагаю, что это современная версия (MySQL 8.x).
Вы можете использовать функцию ROW_NUMBER()
, например:
select *
from (
select *,
row_number() over(partition by item_key, category_key
order by creation_date desc) as rn
from t
) x
where rn = 1
РЕДАКТИРОВАТЬ для MySQL 5.x :
В MySQL 5.x вы можете:
select *
from t
where (item_key, category_key, creation_date) in (
select item_key, category_key, max(creation_date)
from t
group by item_key, category_key
)