Oto jak zapytać bazę danych o pozycję dla identyfikatora gracza 1
:
SELECT COUNT(*) AS rank
FROM tablename
WHERE score > (SELECT score FROM tablename WHERE udid = 1)
Zakładam, że wyższy wynik jest lepszy i zapisujesz tylko najwyższy wynik dla każdego gracza.
Z indeksem score
i udid
, powinno to być dość szybkie.
To, co robi zapytanie, to policzenie liczby użytkowników, którzy mają wyższy wynik niż wybrany użytkownik.
Jeśli niższy wynik jest lepszy, po prostu zmień go na następujący:
SELECT COUNT(*) AS rank
FROM tablename
WHERE score < (SELECT score FROM tablename WHERE udid = 1)
Który liczy liczbę graczy z niższym wynikiem.
Przeczytaj wszystko o indeksach MySQL .