Disons que j'ai la table des scores suivants (rows total de 10):mysql: requête pour retourner scores classe selon un utilisateur spécifique
rank userid score
---- ------ -----
1 |455 |10
2 |435 |9
3 |354 |8
4 |342 |7
5 |343 |6
6 |123 |5
7 |125 |4
8 |128 |3
9 |5 |2
10 |6 |1
l'utilisateur peut récupérer son statut de score, et il peut obtenir 5 marquer des positions autour de sa position. ce qui signifie:
- si l'utilisateur est à la 1ère place, il obtiendra les résultats des rangs 1-5
- si l'utilisateur est à la 6e place, il obtiendra les résultats des rangs 4-9
- si l'utilisateur est à la 9e place, il obtiendra les résultats de rang 6-10
J'essaie de trouver la méthode la plus optimisée pour effectuer ces opérations pour obtenir le statut de score pour l'utilisateur seulement SQL, aucune autre intégration de langage.
merci beaucoup !!!
mise à jour
ce tableau est en fait créé sur la volée
j'ai une table game_log avec gameid, userid et le temps et LOGID (qui est playid) et j'ai table game_score avec LOGID et But.
i utiliser la requête suivante:
@rank:=0;
select @rank:[email protected]+1 as rank,userid,score from (
select * from (
select game_log_gameid as gameid,
game_log_userid as userid,
(select max(game_score_log_score)
from game_score_log where game_score_log_logid=game_log_id) as score,
(select game_score_log_timestamp as time from
game_score_log where game_score_log_logid=game_log_id and
game_score_log_score = score order by game_score_log_timestamp desc)
as time from game_log
where game_log_gameid=620
order by score desc,time
) as a group by gameid,userid) as b order by score desc,time
Quelle quantité de la table ci-dessus est produite dynamiquement via la requête? C'est-à-dire: y a-t-il vraiment un champ «rank» dans le tableau ou est-ce produit à la volée? –
le grade est produit à la volée. Je vais modifier le post principal pour ajouter cette information – ufk