sql >> Databasteknik >  >> RDS >> Mysql

MYSQL uppdatera uttalande för att fylla i rankning efter varje id

Det kanske inte är det snyggaste sättet, men du kan enkelt göra något 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;

Jag antar att du också vill ha uppdateringsförklaringen, och det skulle vara:

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. int till datetime i Python

  2. Databassäkerhet 101:Säkerhet i databaser med öppen källkod

  3. Postgresql csv-import som hoppar över rader

  4. Hur man konfigurerar c3p0 i viloläge för att automatiskt uppdatera inaktuella DB-anslutningar