[
{ id: 1, time: 16, number: 30 },
{ id: 2, time: 10, number: 37 },
{ id: 3, time: 12, number: 25 },
{ id: 4, time: 12, number: 29 },
{ id: 5, time: 12, number: 35 },
{ id: 6, time: 13, number: 39 },
{ id: 7, time: 15, number: 35 },
{ id: 8, time: 14, number: 33 },
]
规则:time越小排名越靠前(升序)。time相同时,number越小排名越靠前(升序)。(因为排名是实时的,不能把排名固定在数据库。)
例如:上图所示,我求id为4的排名。答案应该是第三名。
我的实现方式:我用了一个比较笨的方法也能实现。就是笨了一点。
先用 time:_lt(12),返回 totalx = 1。
然后再查time = 12,number:_lt(29),返回totaly = 1。
所以是(totalx+totaly+1)。表示我排名前面有2个,我在第3。
我还要获取id为4的数据,所以为了获取id为4 的数据和排名就查询了3次数据库。
求:其它更优的方法。