sql >> Database >  >> RDS >> Mysql

ranking items in mysql tabel

Er is geen manier om de volgorde (wat je rang noemt) van iets te berekenen zonder eerst de tabel te sorteren of de rangorde op te slaan.

Als uw tabel echter correct is geïndexeerd (index op populariteit), is het triviaal voor de database om dit te sorteren, zodat u uw rang kunt bepalen. Ik zou iets als het volgende voorstellen:

Alles selecteren, inclusief rang

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

Om een ​​item met een specifieke "id" op te halen, kunt u eenvoudig als volgt een subquery gebruiken:

Selecteer er een, inclusief rang

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


  1. Kolommen selecteren en ordenen die niet in Groupy By SQL-instructie staan ​​- Oracle

  2. Gedistribueerde transactie op gekoppelde server tussen sql-server en mysql

  3. Een CSV-bestand importeren in een SQLite-tabel

  4. Reguliere expressies binnen SQL Server