sql >> Base de Datos >  >> RDS >> Mysql

Declaración de actualización de MYSQL para completar la clasificación por cada identificación

Puede que no sea la forma más bonita, pero fácilmente puedes hacer 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;

Supongo que también desea la declaración de actualización, y sería:

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;