MySQL - la generación de secuencia de subconjunto en una tabla
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
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