logo

ATUALIZAÇÃO SQL com JOIN

JUNÇÃO DE ATUALIZAÇÃO SQL significa que atualizaremos uma tabela usando outra tabela e condição de junção.

Tomemos um exemplo de tabela de clientes. Atualizei a tabela de clientes que contém os detalhes mais recentes do cliente de outro sistema de origem. Quero atualizar a tabela de clientes com os dados mais recentes. Nesse caso, realizarei a junção entre a tabela de destino e a tabela de origem usando a junção no ID do cliente.

Vamos ver o sintaxe da consulta SQL UPDATE com instrução JOIN.

 UPDATE customer_table INNER JOIN Customer_table ON customer_table.rel_cust_name = customer_table.cust_id SET customer_table.rel_cust_name = customer_table.cust_name 

Como usar várias tabelas na instrução SQL UPDATE com JOIN

Vamos pegar duas tabelas, tabela 1 e tabela 2.

Criar tabela1

 CREATE TABLE table1 (column1 INT, column2 INT, column3 VARCHAR (100)) INSERT INTO table1 (col1, col2, col3) SELECT 1, 11, 'FIRST' UNION ALL SELECT 11,12, 'SECOND' UNION ALL SELECT 21, 13, 'THIRD' UNION ALL SELECT 31, 14, 'FOURTH' 

Criar tabela2

 CREATE TABLE table2 (column1 INT, column2 INT, column3 VARCHAR (100)) INSERT INTO table2 (col1, col2, col3) SELECT 1, 21, 'TWO-ONE' UNION ALL SELECT 11, 22, 'TWO-TWO' UNION ALL SELECT 21, 23, 'TWO-THREE' UNION ALL SELECT 31, 24, 'TWO-FOUR' 

Agora verifique o conteúdo da tabela.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Coluna 1Col 2Col 3
11onzePrimeiro
2onze12Segundo
3vinte e um 13 Terceiro
431 14 Quarto

Coluna 1Col 2Col 3
11vinte e umDois Um
2onze22Dois dois
3vinte e um 23 Dois três
431 24 Dois quatro

Nosso requisito é que tenhamos a tabela 2 que tenha duas linhas onde Col 1 é 21 e 31. Queremos atualizar o valor da tabela 2 para a tabela 1 para as linhas onde Col 1 é 21 e 31.

Queremos também atualizar apenas os valores de Col 2 e Col 3.

A maneira mais fácil e comum é usar a cláusula join na instrução update e usar várias tabelas na instrução update.

 UPDATE table 1 SET Col 2 = t2.Col2, Col 3 = t2.Col3 FROM table1 t1 INNER JOIN table 2 t2 ON t1.Col1 = t2.col1 WHERE t1.Col1 IN (21,31) 

Verifique o conteúdo da tabela

SELECIONE DA tabela 1

SELECIONE DA tabela 2

Coluna 1Col 2Col 3
11onzePrimeiro
2onze12Segundo
3vinte e um 23 Dois três
431 24 Dois quatro

Coluna 1Col 2Col 3
11vinte e umPrimeiro
2onze22Segundo
3vinte e um 23 Dois três
431 24 Dois quatro

Aqui podemos ver isso usando a cláusula join na instrução de atualização. Fundimos duas tabelas usando a cláusula join.