logo

SQL AŽURIRANJE s JOIN

SQL AŽURIRANJE JOIN znači da ćemo ažurirati jednu tablicu koristeći drugu tablicu i uvjet spajanja.

Uzmimo primjer tablice kupaca. Ažurirao sam tablicu kupaca koja sadrži najnovije podatke o klijentima iz drugog izvornog sustava. Želim ažurirati tablicu kupaca najnovijim podacima. U tom slučaju izvršit ću spajanje između ciljne tablice i izvorne tablice pomoću spajanja na ID-u korisnika.

Da vidimo sintaksa SQL UPDATE upita s JOIN naredbom.

 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 

Kako koristiti više tablica u SQL UPDATE izjavi s JOIN

Uzmimo dvije tablice, tablicu 1 i tablicu 2.

Napravi tablicu1

 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' 

Napravi tablicu 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' 

Sada provjerite sadržaj u tablici.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Kolona 1Kolona 2Kolona 3
11jedanaestPrvi
2jedanaest12Drugi
3dvadeset i jedan 13 Treći
431 14 Četvrta

Kolona 1Kolona 2Kolona 3
11dvadeset i jedanDva-Jedan
2jedanaest22Dva-dva
3dvadeset i jedan 23 Dva tri
431 24 Dva-četiri

Naš zahtjev je da imamo tablicu 2 koja ima dva retka u kojima je stupac 1 21 i 31. Želimo ažurirati vrijednost iz tablice 2 u tablicu 1 za retke u kojima je stupac 1 21 i 31.

Također želimo ažurirati samo vrijednosti stupca 2 i stupca 3.

Najlakši i najčešći način je korištenje klauzule spajanja u izjavi za ažuriranje i korištenje više tablica u izjavi za ažuriranje.

 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) 

Provjerite sadržaj tablice

ODABIR IZ tablice 1

ODABIR IZ tablice 2

Kolona 1Kolona 2Kolona 3
11jedanaestPrvi
2jedanaest12Drugi
3dvadeset i jedan 23 Dva tri
431 24 Dva-četiri

Kolona 1Kolona 2Kolona 3
11dvadeset i jedanPrvi
2jedanaest22Drugi
3dvadeset i jedan 23 Dva tri
431 24 Dva-četiri

Ovdje možemo vidjeti korištenje klauzule spajanja u izjavi ažuriranja. Spojili smo dvije tablice korištenjem klauzule spajanja.