Mi sono accorto che per come l'avevo concepita io la query era pure sbagliata.


codice:
select t2.* from (
select tab.*,max(ordine) as maggiore
from tab 
group by nome) as t 
left join tab as t2 on t.nome = t2.nome and t.maggiore = t2.ordine
group by nome
order by ordine desc
Così mi sembra corretta anche se ho la sensazione che esista qualche alternativa meno ingarbugliata.