Mysql
 sql >> Base de données >  >> RDS >> Mysql

classement des entrées dans la table mysql

Il n'y a aucun moyen de calculer l'ordre (ce que vous appelez le rang) de quelque chose sans d'abord trier le tableau ou stocker le rang.

Si votre tableau est correctement indexé (indice de popularité), il est trivial pour la base de données de trier cela afin que vous puissiez obtenir votre classement. Je suggérerais quelque chose comme ce qui suit :

Tout sélectionner, y compris le classement

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

Pour récupérer un élément avec un "id" spécifique, vous pouvez simplement utiliser une sous-requête comme suit :

Sélectionnez-en un, y compris le rang

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