sql >> Database teknologi >  >> RDS >> Mysql

rangordnede poster i mysql-tabel

Der er ingen måde at beregne rækkefølgen (det du kalder rang) af noget uden først at sortere tabellen eller gemme rangeringen.

Hvis din tabel dog er korrekt indekseret (indeks på popularitet), er det trivielt for databasen at sortere dette, så du kan få din rang. Jeg vil foreslå noget i stil med følgende:

Vælg alle, inklusive rangering

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

For at hente en vare med et specifikt "id" kan du blot bruge en underforespørgsel som følger:

Vælg en, inklusive rangering

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


  1. Fejlfinding, der løber tør for arbejdstråde

  2. Parametriserede forespørgsler PHP/MySQL

  3. c9.io - hvordan man finder værtsadressen for at oprette en mysql-forbindelse i node.js-platformen

  4. Synkroniser database på ipad med fjerndatabase