2010-10-13 24 views
1

我有一個簡單的表存儲id和學生的分數。我想在單個sql語句中選擇一個學生ID的等級。我在這裏發現了幾個帖子,但它們涉及參數或臨時表,我不想在他們使用休眠時混淆它們。有人可以引入一個可以完成這項工作的單個SQL語句嗎?在單個sql語句中的MySQL排名

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

回答

2

說你的表名是學生,3是你所想要找的等級的學生證和等級從高數到低:

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

謝謝你,爲什麼我不能有這個想法! – 2010-10-13 10:43:50

+0

+1對於一個學生來說,這應該可以正常工作。 – 2010-10-13 10:47:03

+0

+1不僅適用於單個學生案例。如果有兩名學生的成績相同,則會顯示聯合排名。如果您使用「select count(id).... where score> = ....」,那麼它將不起作用。「 – 2010-10-13 11:00:44