Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ranking-Einträge in der MySQL-Tabelle

Es gibt keine Möglichkeit, die Reihenfolge (den sogenannten Rang) von etwas zu berechnen, ohne zuerst die Tabelle zu sortieren oder den Rang zu speichern.

Wenn Ihre Tabelle jedoch richtig indiziert ist (Index nach Popularität), ist es für die Datenbank trivial, dies zu sortieren, damit Sie Ihren Rang erhalten können. Ich würde etwas wie das Folgende vorschlagen:

Alle auswählen, einschließlich Rang

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

Um ein Element mit einer bestimmten "ID" abzurufen, können Sie einfach eine Unterabfrage wie folgt verwenden:

Wählen Sie eine aus, einschließlich Rang

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