2
我試圖從SQL select中排列點數,但是隻有當點數與返回結果中的其他點不相關時。只有當結果不相同時,MySQL行選擇纔會增加
的SQL查詢我使用:
SET @rank=0;
SELECT *, @rank:[email protected]+1 AS rank FROM points;
這很簡單! ,並顯示以下結果:
id | user_id | points | rank
----------------------------
2 | 133845 | 220 | 1
3 | 134084 | 220 | 2
4 | 1 | 150 | 3
5 | 134086 | 145 | 4
6 | 134080 | 100 | 5
7 | 17938 | 30 | 6
8 | 83011 | 20 | 7
9 | 26 | 5 | 8
10 | 134077 | 5 | 9
11 | 134074 | 5 | 10
正如你可以看到ID 2和3分的相同金額等做ID 9,10,和11。因此從技術等級應該都是一樣的而不是繼續增加。
這下面的例子是怎樣的表應該正確地看:
id | user_id | points | rank
----------------------------
2 | 133845 | 220 | 1
3 | 134084 | 220 | 1
4 | 1 | 150 | 2
5 | 134086 | 145 | 3
6 | 134080 | 100 | 4
7 | 17938 | 30 | 5
8 | 83011 | 20 | 7
9 | 26 | 5 | 8
10 | 134077 | 5 | 8
11 | 134074 | 5 | 8
我認識到,不斷遞增的等級上的選擇(使用@等級+ 1),每行不這樣做的理想方式。那麼,如何才能在點數不同的情況下進行特定增量?
從[這個答案](http://stackoverflow.com/questions/7840745/mysql-query-to-dynamic-ranking-rows#answer-7854813):'@rank:= IF(@prev = @curr ,@rank,@ rank + 1)AS rank' –