Solución:
Esta respuesta debería funcionar para usted:
SET @rank=0;
SELECT @rank:[email protected]+1 AS rank, p_id FROM point_table ORDER BY points DESC;
Actualizar: También puede considerar calcular el rango al actualizar los puntos y guardarlo en una columna adicional en la misma tabla. De esa forma también puede seleccionar un solo usuario y conocer su rango. Depende de sus casos de uso lo que tenga más sentido y funcione mejor.
Actualizar: La solución final que resolvimos en los comentarios se veía así:
SELECT
rank, p_id
FROM
(SELECT
@rank:[email protected]+1 AS rank, p_id, userid
FROM
point_table, (SELECT @rank := 0) r
ORDER BY points DESC
) t
WHERE userid = intval($sessionuserid);
Número de fila después de ordenar por
SELECT ( @rank:[email protected] + 1) AS rank, m.* from
(
SELECT a.p_id, a.userid
FROM (SELECT @rank := 0) r, point_table a
ORDER BY a.points DESC
) m
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)