У меня есть следующая структура таблицы для таблицы Player
Table Player {
Long playerID;
Long points;
Long rank;
}
Если предположить, что идентификатор игрока и очки имеют действительные значения, могу ли я обновить рейтинг для всех игроков на основе количества очков в одном запросе? Если два человека имеют одинаковое количество очков, они должны связать за ранг.
Я использую hibernate, поэтому не могу выполнять какие-либо запросы с переменными, поэтому я пришел к этому запросу, который очень неэффективен. Может ли это быть оптимизировано для работы с ограничениями, указанными выше?
update player g1
set g1.rank = 1 +
((SELECT count(*) from
(select * from player) g2
where g2.points > g1.points))