Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Instrução de atualização do MYSQL para preencher a classificação por cada id


Pode não ser a maneira mais bonita, mas você pode facilmente fazer algo como:
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;

Eu acho que você quer a declaração de atualização também, e isso seria:
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;