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 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | undici | Primo |
2 | undici | 12 | Secondo |
3 | ventuno | 13 | Terzo |
4 | 31 | 14 | Il quarto |
Col 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | ventuno | Due uno |
2 | undici | 22 | Due-Due |
3 | ventuno | 23 | Due tre |
4 | 31 | 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 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | undici | Primo |
2 | undici | 12 | Secondo |
3 | ventuno | 23 | Due tre |
4 | 31 | 24 | Due-Quattro |
Col 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | ventuno | Primo |
2 | undici | 22 | Secondo |
3 | ventuno | 23 | Due tre |
4 | 31 | 24 | Due-Quattro |
Qui possiamo vederlo utilizzando la clausola join nell'istruzione update. Abbiamo unito due tabelle utilizzando la clausola join.