"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como atualizar valores NULL em uma tabela com dados de linhas que compartilham o mesmo nome?

Como atualizar valores NULL em uma tabela com dados de linhas que compartilham o mesmo nome?

Publicado em 2024-11-18
Navegar:683

How to Update NULL Values in a Table with Data from Rows Sharing the Same Name?

Atualizando linhas com dados de irmãos da mesma tabela

Visualize uma tabela com uma estrutura semelhante isto:

IDNOMEVALOR
1TesteVALUE1
2Teste2VALUE2
1Teste2NULL
4TesteNULO
1Test3VALUE3

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 é:

IDNOMEVALOR
1TesteVALUE1
2Teste2VALUE2
1Teste2VALUE2
4TesteVALUE1
1Test3VALUE3

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".

Tutorial mais recente Mais>

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