MySQL не имеет никакой аналитической / ранжирующей функциональности, но вы можете использовать переменную для искусственного создания значения ранга:
SELECT t.id,
t.udid,
t.name,
t.score,
@rownum := @rownum + 1 AS rank
FROM HIGHSCORES t
JOIN (SELECT @rownum := 0) r
ORDER BY t.score DESC
Чтобы увидеть, какой ранг связан с UDID
«0000», используйте:
SELECT MAX(x.rank) AS rank
FROM (SELECT t.id,
t.udid,
t.name,
t.score,
@rownum := @rownum + 1 AS rank
FROM HIGHSCORES t
JOIN (SELECT @rownum := 0) r
ORDER BY t.score DESC) x
WHERE x.udid = '0000'
Требуется MAX
, если пользователь имеет несколько значений высокого балла. С другой стороны, вы не можете использовать MAX
и использовать ORDER BY rank LIMIT 1
.