-1

テーブルプレーヤーの次のテーブル構造があります

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

playerID とポイントが有効な値を持っていると仮定すると、1 回のクエリでポイント数に基づいてすべてのプレイヤーのランクを更新できますか? 2 人が同じポイント数を持っている場合、その順位は同点でなければなりません。

アップデート:

ネイティブクエリとして提案されたクエリを使用して休止状態を使用しています。Hibernate は変数、特に ':' の使用を好みません。誰かが回避策を知っていますか? この場合、変数を使用しないか、HQL を使用して hibernate の制限を回避しますか?

4

2 に答える 2

1

// 各結果行 @num:=@num+1 with aliasname position ごとに 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 に答える