2010-10-13 5 views
1

J'ai une simple table de stockage ID et le score de l'étudiant. Je voudrais sélectionner le rang d'un étudiant dans une seule instruction SQL. J'ai trouvé plusieurs messages ici, mais ils impliquent des paramètres ou une table temporaire que je ne veux pas déranger avec eux car j'utilise Hibernate. Quelqu'un peut-il introduire une seule instruction SQL qui peut faire ce travail?classement en MySQL dans une seule instruction SQL

id score 
-------------- 
1  45 
2  73 
3  94 
4  53 

Répondre

2

Supposons que votre nom de la table est étudiant, et 3 est le numéro d'étudiant que vous voulez trouver le rang et le rang est compté de haut en bas:

select count(id) + 1 as rank from student 
where score > (select score from student where id = 3) 
+0

Merci, pourquoi ne pourrais-je y ai pensé! –

+0

+1 Pour un seul étudiant, cela devrait fonctionner correctement. –

+0

+1 n'est pas seulement pour un seul cas étudiant. S'il y a 2 élèves ayant le même score, cela montrerait le co-rang. Cela ne fonctionnera pas si vous utilisez "select count (id) .... where score> = ...." –

Questions connexes