logo

SQL UPDATE s JOIN

SQL AKTUALIZACE PŘIPOJENÍ SE znamená, že aktualizujeme jednu tabulku pomocí jiné tabulky a podmínku spojení.

Vezměme si příklad zákaznické tabulky. Aktualizoval jsem tabulku zákazníků, která obsahuje nejnovější podrobnosti o zákaznících z jiného zdrojového systému. Chci aktualizovat tabulku zákazníků nejnovějšími daty. V takovém případě provedu spojení mezi cílovou tabulkou a zdrojovou tabulkou pomocí spojení na ID zákazníka.

Podívejme se na syntax dotazu SQL UPDATE s příkazem 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 

Jak používat více tabulek v příkazu SQL UPDATE s JOIN

Vezměme si dvě tabulky, tabulku 1 a tabulku 2.

Vytvořte tabulku 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' 

Vytvořte tabulku 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' 

Nyní zkontrolujte obsah v tabulce.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Col 1Col 2Col 3
11jedenáctPrvní
2jedenáct12Druhý
3dvacet jedna 13 Třetí
431 14 Čtvrtý

Col 1Col 2Col 3
11dvacet jednaDva-jedna
2jedenáct22Dva-dva
3dvacet jedna 23 Dva tři
431 24 Dva-Čtyři

Naším požadavkem je, abychom měli tabulku 2, která má dva řádky, kde sloupec 1 je 21 a 31. Chceme aktualizovat hodnotu z tabulky 2 do tabulky 1 pro řádky, kde sloupec 1 je 21 a 31.

Chceme také aktualizovat pouze hodnoty Col 2 a Col 3.

Nejjednodušším a nejběžnějším způsobem je použití klauzule spojení v příkazu aktualizace a použití více tabulek v příkazu aktualizace.

 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) 

Zkontrolujte obsah tabulky

VYBERTE Z tabulky 1

VYBERTE Z tabulky 2

Col 1Col 2Col 3
11jedenáctPrvní
2jedenáct12Druhý
3dvacet jedna 23 Dva tři
431 24 Dva-Čtyři

Col 1Col 2Col 3
11dvacet jednaPrvní
2jedenáct22Druhý
3dvacet jedna 23 Dva tři
431 24 Dva-Čtyři

Zde můžeme vidět, že používáme klauzuli spojení v příkazu aktualizace. Sloučili jsme dvě tabulky pomocí klauzule spojení.