MySQL - gerando sequência subconjunto numa mesa
Pergunta
Eu tenho a seguinte tabela
Id Value
1 3
1 12
1 67
2 7
2 99
5 30
5 33
5 4
5 87
5 12
5 1
Eu gostaria de atualizá-lo para ter esta tabela.
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
Eu encontrei o fio perfeito no SO, mas foi para MSSQL. Eu uso mysql 4.1.10.
O outro segmento pode ser encontrada aqui: seqüências gerando para subconjuntos de uma mesa .
Alguém sabe como posso fazer isso no mysql?
Obrigado, Jean-Francois
Solução
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;
Outras dicas
Escrever um script rápido para fazê-lo. Deve demorar menos de 10 linhas de código em PHP.
Eu acho que você vai encontrar este artigo útil. Em suma:. Você não pode fazê-lo em exatamente uma consulta, mas você pode fazê-lo em dois (carregar seus dados em uma nova tabela e executar uma instrução de inserção)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow