2012-02-19 18 views
0

比方說,我有這個表:確定每行的排名中排序表

ID Score 
1 345 
2 5 
3 76 
4 45 
5 85 
6 175 
7 209 

,這是我的查詢:

SELECT * FROM posts ORDER BY Score DESC 

我如何獲得的排名/位置每排排?

+0

^但我會迭代的結果(沒有where語句),而不是隻關注單行。 – Michelle 2012-02-19 04:51:49

+0

這意味着我沒有選擇一行,我選擇了所有的行。 – Michelle 2012-02-19 04:54:45

+2

如果你用某種語言迭代結果,你當然可以追蹤那裏的排名嗎?如果數據庫是短暫的,並且僅在您查詢時適用,則不需要將數據庫提供給您。 – 2012-02-19 04:56:55

回答

1

您可以使用連接到上面這樣像@OMG小馬的技術:

SELECT posts.*, @row:[email protected]+1 as 'rank' FROM posts, (SELECT @row:=0) r ORDER BY posts.Score DESC 
0

如果您運行下面的代碼,你會看到新的列Position這是相同Rank

SELECT ID, Score, 
(SELECT COUNT(distinct u2.Score) FROM myTable u2 
WHERE 
u2.Score > u1.Score) + 1 AS position FROM myTable u1 
ORDER BY position 

讓我知道如果您有任何疑問...