我有一个表播放器的以下表结构
Table Player {
Long playerID;
Long points;
Long rank;
}
假设 playerID 和积分具有有效值,我可以根据单个查询中的积分数更新所有玩家的排名吗?如果两个人的分数相同,他们应该并列排名。
我正在使用休眠,所以不能执行任何带有变量的查询,所以我想出了这个非常低效的查询。这可以优化以使用上面指定的约束吗?
update player g1
set g1.rank = 1 +
((SELECT count(*) from
(select * from player) g2
where g2.points > g1.points))