sql >> Databasteknik >  >> RDS >> Mysql

ranka poster i mysql-tabellen

Det finns inget sätt att beräkna ordningen (det du kallar rang) för något utan att först sortera tabellen eller lagra rangen.

Om din tabell är korrekt indexerad dock (index på popularitet) är det trivialt för databasen att sortera detta så att du kan få din rankning. Jag skulle föreslå något i stil med följande:

Välj alla, inklusive rang

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

För att hämta ett objekt med ett specifikt "id" kan du helt enkelt använda en underfråga enligt följande:

Välj en, inklusive rang

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


  1. Hur man gör en batchinsättning i MySQL

  2. Mysql-underfrågan resulterar i where-klausul

  3. Hur konverterar man html till pdf med php?

  4. SQL Always On Availability Groups:Datorobjekt