изменить , value_id
на , MAX(value_id) AS value_id
в списке полей ...
На самом деле, теперь, когда я смотрю на это, я думаю, что вы хотите что-то вроде этого:
SELECT a.id, a.name, MAX(b.value_id) AS value_id, (SELECT b.value_name FROM table AS b WHERE b.id = a.id AND b.value_id = MAX(a.value_id)) AS value_name
FROM table AS a
GROUP BY a.id, a.name
ORDER BY value_id DESC
Проблема в том, что таблица не полностью нормализована.Таким образом, у вас есть несколько строк с одинаковыми идентификатором и именем, но у каждой есть уникальные значения value_id и value_name.Таким образом, единственный способ получить значение value_name, связанное с value_id, это либо через подзапрос (что я там делал), либо через соединение ...