模拟搜索并获取返回行的行号(总计)

时间:2017-02-11 05:25:14

标签: php mysql sql logic

我是MySQL的佼佼者,现在几个小时一直在寻找这个问题的解决方案。我找到了一些答案,但似乎无法实现它们。

基本上,继承人我想做的事情:

我想了解来自特定国家/地区的用户在按ID排名时与同一国家/地区的其他用户进行排名的方式

例如:
Joe是ID 10,来自美国 有来自美国的100位用户 结果:乔排名第10位

我如何将其转换为MySQL查询?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

创建2个用户变量,例如running& previous获取先前的排名,并相应地通过将当前值增加1来计算country的排名。

select u.id,u.country,u.rank 
from (
    select u1.id,u1.country,
        @running:=if(@previous=concat(u1.id,u1.country),@running,0) + 1 as rank,
        @previous:=concat(u1.id,u1.country) 
    from tablename u1
    order by concat(t.id,t.country) 
) u;

tablename替换为您的表格