Получение последней записи в каждой группе-MySQL



есть таблица messages, который содержит данные, как показано ниже:



Id   Name   Other_Columns
-------------------------
1 A A_data_1
2 A A_data_2
3 A A_data_3
4 B B_data_1
5 B B_data_2
6 C C_data_1


если я запускаю запрос select * from messages group by name, я получу результат в виде:



1    A       A_data_1
4 B B_data_1
6 C C_data_1


какой запрос вернет следующий результат?



3    A       A_data_3
5 B B_data_2
6 C C_data_1


то есть, последняя запись в каждой группе должен быть возвращен.



в настоящее время, это запрос, который я использую:



SELECT
*
FROM (SELECT
*
FROM messages
ORDER BY id DESC) AS x
GROUP BY name


но это выглядит крайне неэффективным. Есть ли другие способы добиться такого же результата?

627   0  

Comments

    Ничего не найдено.