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 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | jedenáct | První |
2 | jedenáct | 12 | Druhý |
3 | dvacet jedna | 13 | Třetí |
4 | 31 | 14 | Čtvrtý |
Col 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | dvacet jedna | Dva-jedna |
2 | jedenáct | 22 | Dva-dva |
3 | dvacet jedna | 23 | Dva tři |
4 | 31 | 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 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | jedenáct | První |
2 | jedenáct | 12 | Druhý |
3 | dvacet jedna | 23 | Dva tři |
4 | 31 | 24 | Dva-Čtyři |
Col 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | dvacet jedna | První |
2 | jedenáct | 22 | Druhý |
3 | dvacet jedna | 23 | Dva tři |
4 | 31 | 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í.