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

MYSQL-opdateringserklæring for at udfylde rangering efter hvert id

Det er måske ikke den smukkeste måde, men du kan sagtens gøre sådan noget som:

set @rank = 0;
set @prev = 0;

select id, score, IF (id = @prev, @rank := @rank + 1, @rank := 1), @prev := id
from scores
order by id, score;

Jeg gætter på, at du også vil have opdateringserklæringen, og det ville være:

set @rank = 0;
set @prev = 0;

update scores
set rank = IF(id = @prev, @rank := @rank + 1, @rank := 1),
id = (@prev := id)
order by id, score;



  1. Sådan konverteres en postgres-database til sqlite

  2. Oracle FOR LOOP SELECT-erklæringseksempel

  3. Hent data fra Oracle SP Out Param SYS_REFCURSOR i Unix Korn Shell Script

  4. .Net - Oprettelse af et On-Demand recordset i stedet for at trække alt ind i hukommelsen på én gang