O que você está tentando realizar é conhecido como máximo de grupo , que não pode ser alcançado usando
ORDER BY
. Em vez disso, deve-se encontrar o MAX()
e, em seguida, junte o resultado de volta à tabela: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
Veja em sqlfiddle .