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 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | onze | Primeiro |
2 | onze | 12 | Segundo |
3 | vinte e um | 13 | Terceiro |
4 | 31 | 14 | Quarto |
Coluna 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | vinte e um | Dois Um |
2 | onze | 22 | Dois dois |
3 | vinte e um | 23 | Dois três |
4 | 31 | 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 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | onze | Primeiro |
2 | onze | 12 | Segundo |
3 | vinte e um | 23 | Dois três |
4 | 31 | 24 | Dois quatro |
Coluna 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | vinte e um | Primeiro |
2 | onze | 22 | Segundo |
3 | vinte e um | 23 | Dois três |
4 | 31 | 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.