Mysql
 sql >> Base de données >  >> RDS >> Mysql

Instruction de mise à jour MYSQL pour remplir le classement par chaque identifiant

Ce n'est peut-être pas la meilleure façon, mais vous pouvez facilement faire quelque chose comme :

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;

Je suppose que vous voulez également la déclaration de mise à jour, et ce serait :

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;