Update3 variable group_concat_max_len has a minvalue = 4 so we can't use it. But
you can:
select
name,
SUBSTRING_INDEX(group_concat(major order by major desc),',', 1) as major,
SUBSTRING_INDEX(group_concat(minor order by major desc, minor desc),',', 1)as minor,
SUBSTRING_INDEX(group_concat(revision order by major desc, minor desc, revision desc),',', 1) as revision
from your_table
group by name;
this was tested here and no, the previous version does not provide wrong results, it had only the problem with number of concatenated values.