To bypass a problem I posted in a other thread. I tried an sql statement like this:
UPDATE user u JOIN (SELECT @i := 0) r
SET user_rank_planets = (@i := (@i
The @1000111's answer doesn't work. I don't know the reason but MySQL just ignored the ORDER BY in the subquery and updated with the default order (by the Primary_key). A silly solution is wrapping the subquery inside another subquery to create a temporary table.
UPDATE user u
INNER JOIN
(
SELECT * FROM (
SELECT *, (@i := (@i + 1)) AS row_number
FROM user u
CROSS JOIN (SELECT @i := 0) r
WHERE user_active=1
ORDER BY user_planets DESC
) AS t1
) AS t
ON u. = t.
SET u.user_rank_planets = t.row_number