2017-02-26 21 views
1

如果有重複,最高的重複要採取的順序。 例如:我需要在以下方式找到在mysql中的排名

Value - Rank 
----------- 
10 - 1 
20 - 3 
20 - 3 
30 - 5 
30 - 5 
40 - 6 
50 - 7 

20進來第二和第三位置,因此秩是3; 30排在第4和第5位,因此排名是5等。

回答

2
select t3.value, maxrank 
from your_table t3 
join 
(
    select t1.value, max(t2.rank) as maxrank 
    from your_table t1 
    join 
    (
     select value, @rank := @rank + 1 as rank 
     from your_table 
     cross join (select @rank := 0) r 
     order by value 
    ) t2 on t1.value = t2.value 
    group by t1.value 
) t4 on t3.value = t4.value 
+0

不知道多少要謝謝。你是一個天才。 – Harris

相關問題