Това е вашето запитване:
SELECT *
FROM (SELECT *
FROM user_comission_configuration_history
ORDER BY on_date DESC
) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;
Един основен проблем с вашата заявка е, че тя използва разширение MySQL за group by
че MySQL изрично предупреждава срещу. Разширението е използването на други колони в select
които не са в group by
или в агрегиращи функции. Предупреждението (тук
) е:
И така, върнатите стойности в колоните са неопределени .
Ето един доста ефективен начин да получите това, което искате (с "commission" правилно изписан на английски):
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;