Ini pertanyaan Anda:
SELECT *
FROM (SELECT *
FROM user_comission_configuration_history
ORDER BY on_date DESC
) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;
Satu masalah utama dengan kueri Anda adalah ia menggunakan ekstensi MySQL untuk group by
bahwa MySQL secara eksplisit memperingatkan terhadap. Ekstensi adalah penggunaan kolom lain di select
yang tidak termasuk dalam group by
atau dalam fungsi agregasi. Peringatan (di sini
) adalah:
Jadi, nilai yang dikembalikan dalam kolom adalah tak tentu .
Berikut adalah cara yang cukup efisien untuk mendapatkan apa yang Anda inginkan (dengan "komisi" dieja dengan benar dalam bahasa Inggris):
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;