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

Obtenir le classement actuel en utilisant mysql

Vous pouvez le faire avec une sous-requête :

select count(*) as rank
from users u
where u.ammopacks >= (select ammopacks from users u2 where u2.id = x)

Cela ne fait pas exactement la même chose. Cela fera un vrai classement, où les utilisateurs avec la même valeur de ammopacks auront le même rang. L'original donnerait à différents utilisateurs différentes valeurs séquentielles dans ce cas.

Pour obtenir cet effet, vous pouvez faire :

select count(*) as rank
from users u
where u.ammopacks > (select ammopacks from users u2 where u2.id = x) or
      (u.ammopacks = (select ammopacks from users u2 where u2.id = x) and
       u.id <= x
      )