Soy un diseñador francés y tengo un problema de SQL. Mi servidor MySQL está en v5.6 y pido ayuda porque tengo un problema de sintaxis. Creo que me puedes traer una solución.
Tengo una base de datos llamada "puntuaciones":
| identificación | seudo | tempsstage1mili | escenario1 |
|---|---|---|---|
| 1 | pseudo1 | 20100 | --- |
| 2 | pseudo2 | 16900 | --- |
y le pregunto esto a MySQL:
SELECT pseudo, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY tempsstage1mili;Con este comando, MySQL devuelve esto:
| seudo | rango |
|---|---|
| pseudo2 | 1 |
| pseudo1 | 2 |
En este paso es perfecto, pero ahora quiero actualizar mi tabla llamada "puntuaciones" con el resultado. La columna que tengo que actualizar se llama "rangstage1" con la columna "rango"
quiero conseguir eso:
| identificación | seudo | tempsstage1mili | escenario1 |
|---|---|---|---|
| 1 | pseudo1 | 20100 | 2 |
| 2 | pseudo2 | 16900 | 1 |
Usted me podría ayudar ? Por favor ? ¡Eres esperanza!
Gracias !
Puedes convertir esto en una update :
SET @curRank = 0; UPDATE scores SET rankstage1 = (@curRank := @curRank + 1) ORDER BY tempsstage1mili;Después de algunos intentos, creo que esto ayudará:
UPDATE scores s INNER JOIN ( select i.pseudo, i.rank from (SELECT pseudo, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY tempsstage1mili ) i ) a ON s.pseudo = a.pseudo SET s.rangstage1 = a.rank ;Por favor, intente darme su opinión, ¿está funcionando?