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

Foi útil?

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
scroll top