Maison > Article > base de données > Comment récupérer efficacement le classement des utilisateurs à partir d'un tableau de scores non ordonnés en PHP et MySQL ?
Récupération du classement des utilisateurs à partir d'une table de scores non ordonnés en PHP et MySQL
Dans un scénario où vous disposez d'une table de scores avec des enregistrements non ordonnés, déterminer le rang d'un utilisateur peut être une exigence courante. Bien que parcourir toutes les lignes et les trier par score pour calculer le classement soit une option viable, il existe une approche plus efficace utilisant une instruction SQL.
Solution d'instruction SQL
Pour récupérer le classement d'un utilisateur sans boucle, vous pouvez utiliser la requête SQL suivante :
<code class="sql">SELECT s1.initials, ( SELECT COUNT(*) FROM scores AS s2 WHERE s2.score > s1.score )+1 AS rank FROM scores AS s1</code>
Cette requête utilise une sous-requête pour compter le nombre de lignes dans la table « scores » où le score est supérieur au score actuel. le score de la ligne. Le résultat de cette sous-requête, qui représente le nombre d'utilisateurs avec des scores plus élevés, est ensuite incrémenté de 1 pour déterminer le classement.
Exemple d'utilisation
En supposant un score ' table avec les colonnes suivantes :
Pour récupérer le classement d'un utilisateur avec les initiales 'ABC' et un score de 100, exécutez le code PHP suivant :
<code class="php">$query = "SELECT initials, ( SELECT COUNT(*) FROM scores AS s2 WHERE s2.score > s1.score )+1 AS rank FROM scores AS s1 WHERE initials = 'ABC' AND score = 100"; $result = $db->query($query); $row = $result->fetch_assoc(); echo "Rank: " . $row['rank'];</code>
Ce code affichera le classement de l'utilisateur , qui dans ce cas serait "101 joueurs sur 1000" s'il y avait un total de 1000 enregistrements dans le tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!