logo

SQL POSODOBITEV z JOIN

PRIDRUŽITEV POSODOBITVE SQL pomeni, da bomo posodobili eno tabelo z drugo tabelo in pogojem združevanja.

Vzemimo primer tabele strank. Posodobil sem tabelo strank, ki vsebuje najnovejše podatke o strankah iz drugega izvornega sistema. Želim posodobiti tabelo strank z najnovejšimi podatki. V takem primeru bom izvedel združevanje med ciljno in izvorno tabelo z uporabo združevanja na ID stranke.

Poglejmo si sintaksa poizvedbe SQL UPDATE s stavkom 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 

Kako uporabiti več tabel v stavku SQL UPDATE z JOIN

Vzemimo dve tabeli, tabelo 1 in tabelo 2.

Ustvari tabelo 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' 

Ustvari tabelo 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' 

Zdaj preverite vsebino v tabeli.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
stolpec 1stolpec 2stolpec 3
11enajstnajprej
2enajst12drugič
3enaindvajset 13 Tretjič
431 14 Četrtič

stolpec 1stolpec 2stolpec 3
11enaindvajsetDva-ena
2enajst22Dva-dva
3enaindvajset 23 Dva-tri
431 24 Dva-štiri

Naša zahteva je, da imamo tabelo 2 z dvema vrsticama, kjer je stolpec 1 21 in 31. Želimo posodobiti vrednost iz tabele 2 v tabelo 1 za vrstice, kjer je stolpec 1 21 in 31.

Prav tako želimo posodobiti samo vrednosti stolpca 2 in stolpca 3.

Najlažji in najpogostejši način je uporaba klavzule združevanja v stavku posodobitve in uporaba več tabel v stavku posodobitve.

 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) 

Preverite vsebino tabele

IZBERI IZ tabele 1

IZBERI IZ tabele 2

stolpec 1stolpec 2stolpec 3
11enajstnajprej
2enajst12drugič
3enaindvajset 23 Dva-tri
431 24 Dva-štiri

stolpec 1stolpec 2stolpec 3
11enaindvajsetnajprej
2enajst22drugič
3enaindvajset 23 Dva-tri
431 24 Dva-štiri

Tukaj lahko vidimo uporabo klavzule o pridružitvi v izjavi o posodobitvi. Dve tabeli smo združili z uporabo klavzule za združevanje.