Ето как да направите заявка в базата данни за ранга на играч udid 1
:
SELECT COUNT(*) AS rank
FROM tablename
WHERE score > (SELECT score FROM tablename WHERE udid = 1)
Предполагам, че по-високият резултат е по-добър и вие съхранявате само най-високия резултат за всеки играч.
С индекс на score
и udid
, това трябва да е доста бързо.
Това, което прави заявката, е да брои броя на потребителите, които имат по-висок резултат от избрания потребител.
Ако по-нисък резултат е по-добър, просто го променете на това:
SELECT COUNT(*) AS rank
FROM tablename
WHERE score < (SELECT score FROM tablename WHERE udid = 1)
Което отчита броя на играчите с по-нисък резултат.
Прочетете всичко за MySQL индексите .