2010-01-07 5 views
0

J'ai une table avec ce qui suit. Les noms ne sont pas uniques.interroger la plus récente plus récente userid

userid, name 
1, dave 
2, john 
3, mike 
4, mike 
5, dave 

Je souhaite renvoyer le nom unique avec l'ID utilisateur le plus élevé.

ie.

2, john 
4, mike 
5, dave 

Quelle est la requête à faire ainsi?

Répondre

6
select name, max(userid) as max_userid 
from users 
group by name 
order by max(userid) asc 
-2
select userid, name from users where name='john' order by userid desc limit 1 

ou

select userid, name from users where userid 
    = (select max(userid) from users where name='john') 

La première syntaxe est MySQL spécifique (pas de clause "limite" dans d'autres bases de données).

+2

ces requêtes ne une ligne qui est incorrect – Yada

+1

pas marquer ici, mais votre première déclaration ne retournera une ligne (pas tous les trois comme décrit dans la question) et votre seconde ne retournera les noms avec les ID les plus élevés (ce qui pourrait être plus d'un dans le cas des liens). – davek

+0

Désolé, la question n'était pas claire. Voyez la réponse de davek alors. –

Questions connexes