-1

我有一个表播放器的以下表结构

Table Player {  
Long playerID;  
Long points;  
Long rank;  
}

假设 playerID 和积分具有有效值,我可以根据单个查询中的积分数更新所有玩家的排名吗?如果两个人的分数相同,他们应该并列排名。

更新:

我正在使用建议作为本机查询的查询来使用休眠。Hibernate 不喜欢使用变量,尤其是':'。有谁知道任何解决方法?在这种情况下,通过不使用变量或通过使用 HQL 来解决休眠的限制?

4

2 回答 2

1

// 将每个结果行的 num 加一 @num:=@num+1 和别名位置,并最初用 0 定义它,或者按想要成为什么..

select @num:=@num+1 position,
  id, 
  sum(item_1+item_2+item_3) as item_sum 
  from yourtable,(SELECT @num:=0) r
group by id 
order by item_sum desc;
于 2013-07-07T06:38:43.920 回答
0
select  @a:=@a+1 position,
      id, 
      sum(item_1+item_2+item_3) as item_sum 
 from yourtable , (SELECT @a:= 0) AS a
 group by id 
 order by item_sum desc;

你也可以试试这个

SET @position=0;
SELECT   @position:= @position+1 AS position,   
          id, 
          sum(item_1+item_2+item_3) as item_sum 
     from yourtable
     group by id 
     order by item_sum desc;

或者试试这个.......

SELECT @rn:=@rn+1 AS position, item_sum , id
FROM (
  select 
      id, 
      sum(item_1+item_2+item_3) as item_sum 
 from yourtable 
 group by id 
 order by item_sum desc
) t1, (SELECT @rn:=0) t2;
于 2013-07-07T06:29:08.780 回答