Her er, hvordan du forespørger databasen for rang for spiller udid 1
:
SELECT COUNT(*) AS rank
FROM tablename
WHERE score > (SELECT score FROM tablename WHERE udid = 1)
Jeg går ud fra, at en højere score er bedre, og at du kun gemmer den højeste score for hver spiller.
Med et indeks på score
og udid
, det burde være ret hurtigt.
Hvad forespørgslen gør, er at tælle antallet af brugere, der har en højere score end den valgte bruger.
Hvis en lavere score er bedre, skal du blot ændre den til dette:
SELECT COUNT(*) AS rank
FROM tablename
WHERE score < (SELECT score FROM tablename WHERE udid = 1)
Hvilket tæller antallet af spillere med en lavere score.
Læs alt om MySQL-indekser .