【发布时间】:2010-04-28 21:32:15
【问题描述】:
我有一个表格播放器的以下表格结构
Table Player {
Long playerID;
Long points;
Long rank;
}
假设 playerID 和 points 具有有效值,我可以根据单个查询中的点数更新所有玩家的排名吗?如果两个人的分数相同,他们应该并列排名。
我正在使用休眠,因此无法执行任何带有变量的查询,所以我想出了这个效率非常低的查询。这可以优化以使用上面指定的约束吗?
update player g1
set g1.rank = 1 +
((SELECT count(*) from
(select * from player) g2
where g2.points > g1.points))
【问题讨论】:
-
您可以编辑您之前的问题,并让 cmets 要求澄清答案。无需提出新问题...
-
@meriton - 这就是我最初所做的,但有人建议我提出一个新问题。对不起,如果我没有遵守约定。
标签: sql optimization rank