Получение последней записи в каждой группе - 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

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

Ответы на вопрос(22)

Ваш ответ на вопрос