mysql获取订单号

时间:2013-12-05 10:55:50

标签: mysql list ranking

我有以下结构


国家/地区 - 用户ID - 积分

840 23 24
840 32 31
840 22 38
840 15 35
840 10 20
250 15 33
724 17 12

我希望得到用户在每个国家/地区的排名中的位置 我正在使用

select @rownum:=@rownum+1 Num, Country, UserId, points 
from users , (SELECT @rownum:=0) r  
where country=840 order by points DESC ;

我希望在他的国家/地区内获得单个用户的位置

在此示例中,在国家/地区840中,如果我选择用户ID = 23,我将获得位置4

国家/地区 - 用户ID - 积分 - 订单
840 22 38 1
840 15 35 2
840 32 31 3
840 23 24 4
840 10 20 5

2 个答案:

答案 0 :(得分:2)

尝试做:

select * from (
  select @rownum: = @rownum + 1 Num,
        Country,
        UserId,
        points
  from users, (select @rownum: = 0) r
  where country = 840
  order by points desc
) a
where userId = 23

答案 1 :(得分:0)

使用您的查询,您会在结果中收到行号,因此这不是您想要的。最好的方法是生成位置并将它们保存到分离的列中。通过这种方式,您可以轻松选择它,并且不需要每次都重新计算它(这非常重要)。

为此,您可以修改查询以更新行而不是选择它。