logo

SQL UPDATE s JOIN

SQL AKTUALIZÁCIA PRIPOJENIA znamená, že aktualizujeme jednu tabuľku pomocou inej tabuľky a podmienky spojenia.

Vezmime si príklad tabuľky zákazníkov. Aktualizoval som tabuľku zákazníkov, ktorá obsahuje najnovšie podrobnosti o zákazníkoch z iného zdrojového systému. Chcem aktualizovať tabuľku zákazníkov najnovšími údajmi. V takom prípade vykonám spojenie medzi cieľovou tabuľkou a zdrojovou tabuľkou pomocou spojenia na ID zákazníka.

Pozrime sa na syntax SQL UPDATE dotazu s príkazom 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 

Ako používať viacero tabuliek v príkaze SQL UPDATE s JOIN

Zoberme si dve tabuľky, tabuľku 1 a tabuľku 2.

Vytvorenie tabuľky 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' 

Vytvorenie tabuľky 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' 

Teraz skontrolujte obsah v tabuľke.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Col 1Col 2Col 3
11jedenásťnajprv
2jedenásť12Po druhé
3dvadsaťjeden 13 Po tretie
431 14 Po štvrté

Col 1Col 2Col 3
11dvadsaťjedenDva-jeden
2jedenásť22Dva-dva
3dvadsaťjeden 23 Dva tri
431 24 Dva-štyri

Našou požiadavkou je, aby sme mali tabuľku 2, ktorá má dva riadky, kde stĺpec 1 je 21 a 31. Chceme aktualizovať hodnotu z tabuľky 2 do tabuľky 1 pre riadky, kde stĺpec 1 je 21 a 31.

Chceme aktualizovať len hodnoty Col 2 a Col 3.

Najjednoduchším a najbežnejším spôsobom je použitie klauzuly spojenia vo vyhlásení o aktualizácii a použitie viacerých tabuliek v príkaze aktualizácie.

 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) 

Skontrolujte obsah tabuľky

VYBERTE Z tabuľky 1

VYBERTE Z tabuľky 2

Col 1Col 2Col 3
11jedenásťnajprv
2jedenásť12Po druhé
3dvadsaťjeden 23 Dva tri
431 24 Dva-Štyri

Col 1Col 2Col 3
11dvadsaťjedennajprv
2jedenásť22Po druhé
3dvadsaťjeden 23 Dva tri
431 24 Dva-štyri

Tu vidíme, že sa používa klauzula spojenia v aktualizačnom vyhlásení. Zlúčili sme dve tabuľky pomocou klauzuly spojenia.