logo

AGGIORNAMENTO SQL con JOIN

UNISCITI ALL'AGGIORNAMENTO SQL significa che aggiorneremo una tabella utilizzando un'altra tabella e la condizione di unione.

Prendiamo l'esempio di una tabella clienti. Ho aggiornato la tabella dei clienti che contiene gli ultimi dettagli del cliente da un altro sistema di origine. Voglio aggiornare la tabella dei clienti con i dati più recenti. In tal caso, eseguirò l'unione tra la tabella di destinazione e la tabella di origine utilizzando l'unione sull'ID cliente.

Vediamo il sintassi della query SQL UPDATE con l'istruzione 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 

Come utilizzare più tabelle nell'istruzione SQL UPDATE con JOIN

Prendiamo due tabelle, tabella 1 e tabella 2.

Crea tabella1

 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' 

Crea tabella2

 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' 

Ora controlla il contenuto nella tabella.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Col 1Col 2Col 3
11undiciPrimo
2undici12Secondo
3ventuno 13 Terzo
431 14 Il quarto

Col 1Col 2Col 3
11ventunoDue uno
2undici22Due-Due
3ventuno 23 Due tre
431 24 Due-Quattro

Il nostro requisito è che la tabella 2 abbia due righe in cui Col 1 è 21 e 31. Vogliamo aggiornare il valore dalla tabella 2 alla tabella 1 per le righe in cui Col 1 è 21 e 31.

Vogliamo aggiornare anche solo i valori di Col 2 e Col 3.

Il modo più semplice e comune è utilizzare la clausola join nell'istruzione update e utilizzare più tabelle nell'istruzione 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) 

Controlla il contenuto della tabella

SELEZIONA DALLA tabella 1

SELEZIONA DALLA tabella 2

Col 1Col 2Col 3
11undiciPrimo
2undici12Secondo
3ventuno 23 Due tre
431 24 Due-Quattro

Col 1Col 2Col 3
11ventunoPrimo
2undici22Secondo
3ventuno 23 Due tre
431 24 Due-Quattro

Qui possiamo vederlo utilizzando la clausola join nell'istruzione update. Abbiamo unito due tabelle utilizzando la clausola join.