logo

ACTUALITZACIÓ SQL amb JOIN

ACTUALITZACIÓ SQL JOIN significa que actualitzarem una taula utilitzant una altra taula i la condició d'unió.

Prenguem un exemple de taula de clients. He actualitzat la taula de clients que conté els darrers detalls dels clients d'un altre sistema d'origen. Vull actualitzar la taula de clients amb les dades més recents. En aquest cas, realitzaré la unió entre la taula de destinació i la taula d'origen mitjançant la unió a l'identificador de client.

Vegem el sintaxi de la consulta SQL UPDATE amb la instrucció 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 

Com utilitzar diverses taules a la instrucció SQL UPDATE amb JOIN

Prenem dues taules, la taula 1 i la taula 2.

Crea la taula 1

 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 la taula 2

 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' 

Ara comproveu el contingut de la taula.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Col 1Col 2Col 3
1111Primer
21112Segon
321 13 Tercer
431 14 Quart

Col 1Col 2Col 3
1121Dos-Un
21122Dos-Dos
321 23 Dos-Tres
431 24 Dos-Quatre

El nostre requisit és que tinguem la taula 2 que tingui dues files on Col 1 és 21 i 31. Volem actualitzar el valor de la taula 2 a la taula 1 per a les files on Col 1 és 21 i 31.

També volem actualitzar només els valors de Col 2 i Col 3.

La manera més senzilla i comuna és utilitzar la clàusula join a la instrucció d'actualització i utilitzar diverses taules a la instrucció d'actualització.

 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) 

Comproveu el contingut de la taula

SELECCIONAR DE LA taula 1

SELECCIONA DE LA taula 2

Col 1Col 2Col 3
1111Primer
21112Segon
321 23 Dos-Tres
431 24 Dos-Quatre

Col 1Col 2Col 3
1121Primer
21122Segon
321 23 Dos-Tres
431 24 Dos-Quatre

Aquí podem veure que s'utilitza la clàusula join a la declaració d'actualització. Hem combinat dues taules mitjançant l'ús de la clàusula join.