Hoewel ik niet zeker weet wat "problematisch" in deze context betekent, is hier de vraag herschreven als een gewone LEFT JOIN
met een subquery om de rangorde aan het einde goed te krijgen (de ORDER BY
moet worden gedaan voor de rangschikking);
SELECT user_id, score, @rank := @rank + 1 AS rank FROM
(
SELECT u.user_id, u.score
FROM user_score u
LEFT JOIN user_score u2
ON u.user_id=u2.user_id
AND u.`timestamp` < u2.`timestamp`
WHERE u2.`timestamp` IS NULL
ORDER BY u.score DESC
) zz, (SELECT @rank := 0) z;
Een SQLfiddle om mee te testen .
EDIT:om rekening te houden met group_id, moet je de zoekopdracht iets uitbreiden;
SELECT user_id, score, @rank := @rank + 1 AS rank FROM
(
SELECT u.user_id, u.score
FROM user_score u
LEFT JOIN user_score u2
ON u.user_id=u2.user_id
AND u.group_id = u2.group_id -- u and u2 have the same group
AND u.`timestamp` < u2.`timestamp`
WHERE u2.`timestamp` IS NULL
AND u.group_id = 1 -- ...and that group is group 1
ORDER BY u.score DESC
) zz, (SELECT @rank := 0) z;