logo

SQL UPDATE cu JOIN

SQL UPDATE JOIN înseamnă că vom actualiza un tabel folosind un alt tabel și vom alătura condiția.

Să luăm un exemplu de tabel pentru clienți. Am actualizat tabelul de clienți care conține cele mai recente detalii despre clienți dintr-un alt sistem sursă. Doresc să actualizez tabelul clienților cu cele mai recente date. În acest caz, voi efectua îmbinarea între tabelul țintă și tabelul sursă folosind join on ID-ul clientului.

Să vedem sintaxă de interogare SQL UPDATE cu instrucțiunea 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 

Cum să utilizați mai multe tabele în instrucțiunea SQL UPDATE cu JOIN

Să luăm două tabele, tabelul 1 și tabelul 2.

Creați tabelul 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ți tabelul 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' 

Acum verificați conținutul din tabel.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Col 1Col 2Col 3
11unsprezecePrimul
2unsprezece12Al doilea
3douăzeci și unu 13 Al treilea
431 14 Al patrulea

Col 1Col 2Col 3
11douăzeci și unuDoi unu
2unsprezece22Doi-Doi
3douăzeci și unu 23 Doi trei
431 24 Doi-Patru

Cerința noastră este să avem tabelul 2 care să aibă două rânduri în care Col 1 este 21 și 31. Dorim să actualizăm valoarea din tabelul 2 în tabelul 1 pentru rândurile în care Col 1 este 21 și 31.

Dorim să actualizăm, de asemenea, doar valorile Col 2 și Col 3.

Cea mai simplă și comună modalitate este de a folosi clauza join în instrucțiunea de actualizare și de a folosi mai multe tabele în instrucțiunea de actualizare.

 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) 

Verificați conținutul tabelului

SELECTAȚI DIN tabelul 1

SELECTAȚI DIN tabelul 2

Col 1Col 2Col 3
11unsprezecePrimul
2unsprezece12Al doilea
3douăzeci și unu 23 Doi trei
431 24 Doi-Patru

Col 1Col 2Col 3
11douăzeci și unuPrimul
2unsprezece22Al doilea
3douăzeci și unu 23 Doi trei
431 24 Doi-Patru

Aici putem vedea că folosirea clauzei join în declarația de actualizare. Am îmbinat două tabele prin utilizarea clauzei join.