Tidak ada cara untuk menghitung urutan (apa yang Anda sebut peringkat) dari sesuatu tanpa terlebih dahulu menyortir tabel atau menyimpan peringkat.
Namun, jika tabel Anda diindeks dengan benar (indeks popularitas), database akan mudah mengurutkannya sehingga Anda bisa mendapatkan peringkat Anda. Saya akan menyarankan sesuatu seperti berikut:
Pilih semua, termasuk peringkat
SET @rank := 0;
SELECT t.*, @rank := @rank + 1
FROM table t
ORDER BY t.popularity;
Untuk mengambil item dengan "id" tertentu maka Anda cukup menggunakan subquery sebagai berikut:
Pilih salah satu, termasuk peringkat
SET @rank := 0;
SELECT * FROM (
SELECT t.*, @rank := @rank + 1
FROM table t
ORDER BY t.popularity
) t2
WHERE t2.id = 1;