对于表Player
,我有以下表结构Table Player {
Long playerID;
Long points;
Long rank;
}
假设playerID和积分有有效值,我可以根据单个查询中的积分数更新所有玩家的等级吗?如果两个人拥有相同数量的积分,他们应该为排名配合。
更新
我正在使用建议作为本机查询的查询来使用hibernate。 Hibernate不喜欢使用变量,特别是':'。有谁知道任何变通方法?通过不使用变量或在这种情况下使用HQL解决hibernate的限制?
答案 0 :(得分: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;
答案 1 :(得分: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;