Ta poslední varianta je ale špatně. Neřeší to paralelní přihlášení (nevím, zda se mohou uživatelé přihlašovat paralelně) a neřeší to null hodnoty ve sloupci logout (které tam evidentně jsou).
Zkusím nejdřív zpřesnit zadání. Pro každé name chceme v tabulce najít řádek s maximální hodnotou login. Výsledné řádky chceme řadit vzestupně podle name. Předpokládáme, že name a login nemohou být null. Dále předpokládáme, že pro každé name existuje hledaný řádek právě jeden.
Potom lze dotaz napsat takto:
select a.*
from tabulka a inner join (
select name, max(login) as login
from tabulka
group by name
) b on a.name = b.name and a.login = b.login
order by a.name
Nemám nikde po ruce MySQL, takže to nevyzkouším, ale mělo by to fungovat. Samozřejmě to lze napsat i jinak (např. s použitím IN místo joinu).