Ranking de actualización en la tabla
Pregunta
Tengo dos mesas:
mysql> desc rank ;
+----------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| score_id | int(11) | NO | MUL | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| rank | int(11) | NO | MUL | NULL | |
| last_rank | int(11) | NO | MUL | NULL | |
+----------------+-------------+------+-----+---------+----------------+
mysql> desc score ;
+----------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| points | int(11) | NO | MUL | NULL | |
+----------------+-------------+------+-----+---------+----------------+
Lo que necesito hacer es una vez al día, actualice el 'rango' de todos los registros. Una vez por semana, actualice el 'Last_Rank' de todos los registros.
Puedo hacer una selección que devuelva un rango para cada fila:
SET @r = 0 ;
SELECT a.user_id, a.rank, @r:= (@r+1), a.last_rank,
b.points
FROM rank AS a
JOIN score AS b
WHERE a.score_id = b.id
ORDER BY b.points ;
Sin embargo, no puedo encontrar una manera de actualizar la tabla de rango con este resultado ...
- ¿Cómo puedo hacer esto?
- ¿Existe una mejor manera (rápida) de hacer esto?
Versión MySQL:
mysql> SELECT VERSION();
+------------+
| VERSION() |
+------------+
| 5.1.61-log |
+------------+
No hay solución correcta
Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange