我有一个表播放器的以下表结构
Table Player {
Long playerID;
Long points;
Long rank;
}
假设 playerID 和积分具有有效值,我可以根据单个查询中的积分数更新所有玩家的排名吗?如果两个人的分数相同,他们应该并列排名。
更新:
我正在使用建议作为本机查询的查询来使用休眠。Hibernate 不喜欢使用变量,尤其是':'。有谁知道任何解决方法?在这种情况下,通过不使用变量或通过使用 HQL 来解决休眠的限制?
// 将每个结果行的 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;
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;