У меня такой запрос получился:
UPDATE persons AS c, (
SELECT f1.id AS id, COUNT(f2.id) as rnk
FROM persons as f1
LEFT JOIN persons as f2 on
(f2.rating>f1.rating) OR ((f2.rating=f1.rating) AND (f2.id<=f1.id))
GROUP BY f1.id
) as r
SET c.rank=r.rnk
WHERE c.id=r.id
Задачка для знатоков MySQL