je la structure de tableau ci-dessous pour un lecteur de tableoptimisation SQL Rank requête
Table Player {
Long playerID;
Long points;
Long rank;
}
En supposant que le playerID et les points ont des valeurs valides, puis-je mettre à jour le rang pour tous les joueurs en fonction du nombre de points dans une seule requête? Si deux personnes ont le même nombre de points, elles doivent égaliser pour le classement. J'utilise hibernate, donc je ne peux pas exécuter de requêtes avec des variables, donc j'ai trouvé cette requête qui est très inefficace. Cela peut-il être optimisé pour fonctionner avec les contraintes spécifiées ci-dessus?
update player g1
set g1.rank = 1 +
((SELECT count(*) from
(select * from player) g2
where g2.points > g1.points))
Vous pouvez modifier votre question plus tôt, et laisser des commentaires à demander des éclaircissements sur une réponse. Pas besoin d'ouvrir une nouvelle question ... – meriton
@meriton - C'est ce que j'ai fait initialement, mais on m'a suggéré d'ouvrir une nouvelle question. Désolé si je n'ai pas respecté les conventions. – smahesh