Oto Twoje zapytanie:
SELECT *
FROM (SELECT *
FROM user_comission_configuration_history
ORDER BY on_date DESC
) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;
Jednym z głównych problemów z zapytaniem jest to, że używa rozszerzenia MySQL do group by
że MySQL wyraźnie ostrzega przed. Rozszerzeniem jest użycie innych kolumn w select
które nie są w group by
lub w funkcjach agregujących. Ostrzeżenie (tutaj
) to:
Tak więc wartości zwracane w kolumnach są nieokreślone .
Oto całkiem skuteczny sposób na uzyskanie tego, czego chcesz (z poprawną pisownią „prowizji” po angielsku):
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;