Mysql
 sql >> Database >  >> RDS >> Mysql

voci di classifica nella tabella MySQL

Non c'è modo di calcolare l'ordine (quello che chiami rango) di qualcosa senza prima ordinare la tabella o memorizzare il rango.

Tuttavia, se la tua tabella è indicizzata correttamente (indice di popolarità) è banale per il database ordinarlo in modo da poter ottenere il tuo grado. Suggerirei qualcosa di simile al seguente:

Seleziona tutto, incluso il grado

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

Per recuperare un elemento con un "id" specifico, puoi semplicemente utilizzare una sottoquery come segue:

Selezionane uno, incluso il grado

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