"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 atualizo valores vazios em uma tabela com base em dados de outras linhas com o mesmo nome?

Como atualizo valores vazios em uma tabela com base em dados de outras linhas com o mesmo nome?

Publicado em 2024-11-16
Navegar:633

How do I update empty values in a table based on data from other rows with the same name?

Copiando dados entre linhas em uma tabela

No gerenciamento de banco de dados, muitas vezes é necessário atualizar linhas com base em dados de outras linhas dentro do mesma mesa. Considere uma tabela com colunas ID, NAME e VALUE que contém valores NAME duplicados, como segue:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |         |
 4   |   Test    |         |
 1   |   Test3   |  VALUE3 |

Suponha que queremos atualizar os campos VALUE vazios em linhas com valores NAME duplicados. Para conseguir isso, podemos empregar consultas SQL que fazem referência e atualizam valores dentro da mesma tabela.

Uma abordagem envolve o uso de uma instrução UPDATE com uma junção. Na consulta a seguir, unimos data_table duas vezes, apelidando-os de dt1 e dt2:

UPDATE data_table dt1, data_table dt2 
SET dt1.VALUE = dt2.VALUE 
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != '' 

Esta consulta identifica e atualiza os campos VALUE vazios (onde dt1.VALUE está vazio) com não vazios VALUEs de outras linhas com o mesmo NAME (onde dt2.VALUE não está vazio).

Como alternativa, podemos usar uma subconsulta para identifique as linhas com VALUEs não vazios e junte-as novamente à tabela original para atualização:

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

Ambas as consultas resultarão na saída desejada:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |  VALUE2 |
 4   |   Test    |  VALUE1 |
 1   |   Test3   |  VALUE3 |

Essas abordagens fornecem flexibilidade na manipulação de dados dentro de uma tabela, permitindo atualizar valores com base em critérios que incluem outras linhas na mesma tabela.

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