Pregunta

Tengo la siguiente tabla

Id   Value
1     3
1     12
1     67
2     7
2     99
5     30
5     33
5     4
5     87
5     12
5     1

Me gustaría actualizarlo para tener esta tabla.

Id  UniqueIdBySubSet    Value
1           1             3
1           2             12
1           3             67
2           1             7
2           2             99
5           1             30
5           2             33
5           3             4
5           4             87
5           5             12
5           6             1

He encontrado el hilo perfecto en SO, pero era para mssql. Utilizo MySQL 4.1.10.

El otro hilo se puede encontrar aquí: secuencias de generación para subconjuntos de una mesa .

¿Alguien sabe cómo puedo hacer que en MySQL?

Gracias, Jean-Francois

¿Fue útil?

Solución

SET  @r := 0;
SET  @id := 0;
UPDATE  mytable m
SET     m.UniqueIdBySubSet = IF(@id = id, @r := @r + 1, @r := (@id := id) - id)
ORDER BY
        id, value;

Otros consejos

Escribir un guión rápida de hacerlo. Se debe tener menos de 10 líneas de código en php.

Creo que encontrará este artículo útil. En pocas palabras:. No puede hacerlo en exactamente una consulta, pero puede hacerlo en dos (cargar sus datos en una nueva tabla y ejecutar una instrucción de inserción)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top