Dette er din forespørgsel:
SELECT *
FROM (SELECT *
FROM user_comission_configuration_history
ORDER BY on_date DESC
) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;
Et stort problem med din forespørgsel er, at den bruger en MySQL-udvidelse til at group by
at MySQL eksplicit advarer imod. Udvidelsen er brugen af andre kolonner i select
som ikke er i group by
eller i aggregeringsfunktioner. Advarslen (her
) er:
Så de værdier, der returneres i kolonnerne, er ubestemte .
Her er en ret effektiv måde at få det, du ønsker (med "kommission" stavet korrekt på engelsk):
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;