Atualizando linhas com dados de irmãos da mesma tabela
Visualize uma tabela com uma estrutura semelhante isto:
ID | NOME | VALOR |
---|---|---|
1 | Teste | VALUE1 |
2 | Teste2 | VALUE2 |
1 | Teste2 | NULL |
4 | Teste | NULO |
1 | Test3 | VALUE3 |
Seu A tarefa é preencher as células NULL "VALUE" com dados de outras linhas com o mesmo "NAME" (ou seja, "Test" e "Test2" devem herdar valores de seus predecessores). O resultado desejado é:
ID | NOME | VALOR |
---|---|---|
1 | Teste | VALUE1 |
2 | Teste2 | VALUE2 |
1 | Teste2 | VALUE2 |
4 | Teste | VALUE1 |
1 | Test3 | VALUE3 |
O O desafio está em fazer referência a linhas na mesma tabela que compartilham um valor "NOME" específico. A solução envolve o uso de uma instrução JOIN:
UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE FROM data_table WHERE VALUE IS NOT NULL AND VALUE != '') t1 SET t.VALUE = t1.VALUE WHERE t.ID = t1.ID AND t.NAME = t1.NAME
Nesta instrução, a subconsulta (T1) extrai linhas distintas com valores "VALUE" não NULL e não vazios. A consulta principal (t) então se junta a esta subconsulta nos campos "ID" e "NOME" para identificar as linhas a serem atualizadas. Como resultado, as células vazias "VALUE" são preenchidas com os valores correspondentes das linhas não vazias com o mesmo valor "NAME".
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3