Това, което се опитвате да постигнете, е известно като групово максимум
, което не може да бъде постигнато с помощта на ORDER BY
. Вместо това трябва да се намери MAX()
и след това присъединете резултата обратно към таблицата:
SELECT prd_data.* FROM prd_data NATURAL JOIN (
SELECT sub_prd_id, MAX(created_at) created_at
FROM prd_data
GROUP BY sub_prd_id
) t
Вижте го на sqlfiddle .