Toto je váš dotaz:
SELECT *
FROM (SELECT *
FROM user_comission_configuration_history
ORDER BY on_date DESC
) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;
Jedním z hlavních problémů vašeho dotazu je, že používá rozšíření MySQL pro group by
že MySQL explicitně varuje před. Rozšíření je použití dalších sloupců v select
které nejsou v group by
nebo v agregačních funkcích. Varování (zde
) je:
Hodnoty vrácené ve sloupcích jsou tedy neurčité .
Zde je docela účinný způsob, jak získat to, co chcete (se správně napsaným slovem „provize“ v angličtině):
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;