sql >> Base de Datos >  >> RDS >> Mysql

clasificación de entradas en la tabla mysql

No hay forma de calcular el orden (lo que llamas rango) de algo sin ordenar primero la tabla o almacenar el rango.

Sin embargo, si su tabla está indexada correctamente (índice de popularidad), es trivial que la base de datos clasifique esto para que pueda obtener su rango. Yo sugeriría algo como lo siguiente:

Seleccionar todo, incluido el rango

SET @rank := 0;
SELECT t.*, @rank := @rank + 1
FROM table t
ORDER BY t.popularity;

Para obtener un elemento con un "id" específico, simplemente puede usar una subconsulta de la siguiente manera:

Seleccione uno, incluido el rango

SET @rank := 0;
SELECT * FROM (
  SELECT t.*, @rank := @rank + 1
  FROM table t
  ORDER BY t.popularity
) t2
WHERE t2.id = 1;