Esta es su consulta:
SELECT *
FROM (SELECT *
FROM user_comission_configuration_history
ORDER BY on_date DESC
) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;
Un problema importante con su consulta es que utiliza una extensión de MySQL para group by
que MySQL explícitamente advierte contra. La extensión es el uso de otras columnas en el select
que no están en el group by
o en funciones de agregación. La advertencia (aquí
) es:
Entonces, los valores devueltos en las columnas son indeterminados .
Aquí hay una forma bastante eficiente de obtener lo que desea (con "comission" escrito correctamente en inglés):
SELECT *
FROM user_commission_configuration_history cch
WHERE NOT EXISTS (select 1
from user_commission_configuration_history cch2
where cch2.user_id = cch.user_id and
cch2.commission_id = cch.commission_id and
cch2.on_date > cch.on_date
) AND
cch.user_id = 408002;