我是MySQL的佼佼者,现在几个小时一直在寻找这个问题的解决方案。我找到了一些答案,但似乎无法实现它们。
基本上,继承人我想做的事情:
我想了解来自特定国家/地区的用户在按ID排名时与同一国家/地区的其他用户进行排名的方式
例如:
Joe是ID 10,来自美国
有来自美国的100位用户
结果:乔排名第10位
我如何将其转换为MySQL查询?
提前谢谢。
答案 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
替换为您的表格