Det här är din fråga:
SELECT *
FROM (SELECT *
FROM user_comission_configuration_history
ORDER BY on_date DESC
) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;
Ett stort problem med din fråga är att den använder ett MySQL-tillägg för att group by
att MySQL explicit varnar för. Tillägget är användningen av andra kolumner i select
som inte finns i group by
eller i aggregeringsfunktioner. Varningen (här
) är:
Så, värdena som returneras i kolumnerna är obestämda .
Här är ett ganska effektivt sätt att få det du vill ha (med "kommission" rättstavat på engelska):
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;