DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Como fazer um update com JOIN no MySQL?

Fala galera do Show Delphi, tudo beleza?

Hoje vamos a mais uma dica de SQL, utilizando o banco de dados MySQL.

Vamos a pergunta de hoje:

É possível atualizar vários registros fazendo a junção de tabelas?

Sim, isso é perfeitamente possível. Observe que para fazer a junção (join) é necessário que haja um campo em comum entre as duas tabelas, ou seja, um campo que faça a ligação de uma entidade com a outra.

Confuso? Veja como ficaria a sintaxe deste comando.

1
2
3
UPDATE TABELA a 
JOIN TABLEB b ON a.colA = b.colB  
SET a.columnToUpdate = [VALOR]

Vamos examinar a instrução UPDATE acima em maiores detalhes:

Logo após a instrução UPDATE, temos a tabela principal que será atualizada.
Abaixo, há a junção de outra tabela, onde utilizamos a instrução JOIN, juntando a tabela A com a B de acordo que as duas tenham a mesma chave. Este JOIN pode ser; INNER, LEFT, RIGHT, ETC…dependendo da sua necessidade e entendimento.
E finalmente o SET que determina os nomes das colunas da tabela e os novos valores. Lembrando que os novos valores podem ser valores literais, números, resultado de expressões ou sub consultas.

E fazer atualização dos registros a partir de um SELECT, também é possível?

Sim, isso também é possível. O importante para este tipo de procedimento é prestar bem atenção nos nomes dos campos da tabela e mais, na sequência das informações. Elas precisam estar na mesma ordem para que não haja problemas, senão podem ocorrer erros, ou pior, trocar a ordem das informações, vamos ao exemplo:

1
2
3
UPDATE TABELA_A SET CAMPO1 = (
    SELECT CAMPO_TABELA_B FROM TABELA_B WHERE id = [VALOR]
)

Perceba que na TABELA B, foi solicitado somente um campo, sendo este campo o valor que eu quero obter. Se eu errar e colocar uma coluna qualquer, pode haver erro, mas somente se os tipos de dados forem diferentes. Portanto nesse passo é preciso prestar atenção para buscar os dados que realmente deseja.

Consigo fazer o UPDATE com JOIN?

Felizmente a resposta é SIM! Ao menos no MySQL. É possível fazer quase tudo que imaginamos, basta pesquisar e tomar cuidado com instruções novas. Sempre é bom fazer um BACKUP antes fazer testes, principalmente com comandos que ainda não temos domínio e, pode ter certeza, mesmo tendo domínio, uma distração você pode botar tudo a perder e ter uma enorme dor de cabeça, portanto sempre é bom ter um BACKUP, fica a dica.

E a SINTAXE para atualizar os registros com junção (JOIN) de tabelas ficaria da seguinte forma:

1
2
3
4
5
6
7
UPDATE TABELA_A a 
INNER JOIN TABELA_B b ON a.ID_A = b.ID_B
SET
a.CAMPO1 = [VALOR],
a.CAMPO2 = [VALOR],
a.CAMPO3 = [VALOR]
WHERE b.CAMPO_TABELA_B = [VALOR]

No exemplo acima, estamos atualizando a TABELA A, onde a TABELA B tenha um campo em comum com A e utilizando o SET para determinar os nomes das colunas da tabela e os novos valores, restringindo os valores de acordo com a instrução WHERE, onde somente serão atualizados os registros com valores que sejam iguais a TABELA B.

Note também, que logo após o nome da tabela tem um PREFIXO, ou seja, podemos dar um nome (alias) qualquer para ela, onde a partir deste momento sempre que precisarmos nos referir a ela, basta usarmos o PREFIXO (a, b, etc…)

Faça testes, mas lembre-se, sempre fazendo BACKUP antes para não perder seus dados, sejam eles de qualquer importância.

Espero que seja útil a todos.

Fonte de referência: https://www.gigasystems.com.br/artigo/65/update-a-partir-de-um-select-join

Um abraço e até o próximo post.

Facebook Comments Box
  • Giovani Da Cruz
  • 4.946 views
  • 0 comentários
  • 7 de novembro de 2020

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados