Du kan göra detta med en underfråga:
select count(*) as rank
from users u
where u.ammopacks >= (select ammopacks from users u2 where u2.id = x)
Det här gör inte exakt samma sak. Detta kommer att göra en riktig rankning, där användare med samma värde på ammopacks
kommer att ha samma rang. Originalet skulle ge olika användare olika sekventiella värden i detta fall.
För att få den här effekten kan du göra:
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
)