I have a Ranking board for the best first 100 blogs for each gender Males and Females.
I have a blogs table:
PRIMARY
blogs_id users_id blogs_score blo
UPDATE users u, (
SELECT
(
CASE gender
WHEN @curType
THEN @curRow := @curRow + 1
ELSE @curRow := 1 AND @curType := gender END
) + 1 AS rank, users_id, blogs_score, blogs_score_time, gender
FROM blogs,
(SELECT @curRow := 0, @curType := '') r
ORDER BY gender, blogs_score DESC, blogs_score_time DESC
) r1
SET u.best_rank = r1.rank
WHERE
u.id = r1.users_id
It does 2 works:
I think you should add the a GROUP BY
clause this way before ORDER BY
$sql->query("UPDATE users
JOIN (SELECT b.users_id,
@curRank := @curRank + 1 AS rank,
MAX(b.blogs_score), MAX(b.blogs_score_time )
FROM blogs b
JOIN (SELECT @curRank := 0) r
GROUP BY b.user_id, rank
ORDER BY b.blogs_score DESC, p.blogs_score_time DESC LIMIT 100
) ranks ON (ranks.users_id = users.id)
SET users.best_rank = ranks.rank");