Neexistuje způsob, jak vypočítat pořadí (to, čemu říkáte pořadí) něčeho, aniž byste nejprve seřadili tabulku nebo uložili pořadí.
Pokud je však vaše tabulka správně indexována (index popularity), je pro databázi triviální to třídit, abyste mohli získat svou hodnost. Navrhoval bych něco jako následující:
Vybrat vše, včetně hodnocení
SET @rank := 0;
SELECT t.*, @rank := @rank + 1
FROM table t
ORDER BY t.popularity;
Chcete-li načíst položku se specifickým „id“, můžete jednoduše použít dílčí dotaz takto:
Vyberte jednu, včetně pozice
SET @rank := 0;
SELECT * FROM (
SELECT t.*, @rank := @rank + 1
FROM table t
ORDER BY t.popularity
) t2
WHERE t2.id = 1;