MySQL instruction de mise à jour pour stocker les positions de classement
Je vais essayer d'obtenir ma tête autour d'une requête et je ne peux pas le comprendre. J'apprécierais si quelqu'un me donner un pointeur. Comme un simple exemple de ce que je suis en train de réaliser, j'ai ces enregistrements dans la base de données
Score|Ranking
-------------
100 |0
200 |0
300 |0
Et je voudrais le Classement du domaine pour contenir 1, 2 et 3 en fonction de qui a le score le plus élevé de sorte que le résultat devrait être:
Score|Ranking
-------------
100 |3
200 |2
300 |1
En ce moment, je suis en train de faire une boucle for next pour tous ces dossiers, mais étant donné que, en réalité, qui pourrait être un quelques milliers - qui pourrait prendre une éternité! Quelqu'un aurait-il une idée sur la magie de la requête qui permettrait de le faire en une seule fois?
OriginalL'auteur user385762 | 2010-07-07
Vous devez vous connecter pour publier un commentaire.
De MySQL, vous pouvez utiliser la fonction row_number.
Voici un exemple de l'utiliser dans un
SELECT
:Si vous
INSERT INTO
à l'aide d'unSELECT
comme cela, vous obtiendrez votre classement.D'où vient cette mise à jour les valeurs dans la DB?
OriginalL'auteur DOK
Voici une façon de le faire:
Autonome dans le sens où il est en une seule requête, oui; mais c'est parce qu'il paramètre @rownum dans la sous-requête SELECT. Qui, je pense, regarde messier.
La beauté est dans l'œil de celui qui regarde, mais que la possibilité de déposer une seule déclaration est moins susceptible d'avoir des problèmes
OriginalL'auteur quantumSoup
Cela crée une ligne instruction de mise à jour qui permettra de classer les joueurs par incrémentation de la variable
@rc
. Je l'ai utilisé de nombreuses fois dans de très semblable cas, il fonctionne bien et maintient le tout sur la DB côté.id
est supposé être la clé primaire de votreplayers
table.OriginalL'auteur Jason McCreary
OriginalL'auteur Colen
je vous montre ma façon de faire [pour l'intervalle de mise à jour sql fonctions]
sélectionnez:
mise à jour:
je n'ai pas fait toutes les vérifications de performance sur celui-ci sauf pour les essais qu'il fonctionne
OriginalL'auteur vortex