DOŁĄCZ DO AKTUALIZACJI SQL oznacza, że zaktualizujemy jedną tabelę przy użyciu innej tabeli i warunku złączenia.
Weźmy przykładowy stół klienta. Zaktualizowałem tabelę klientów, która zawiera najnowsze dane klienta z innego systemu źródłowego. Chcę zaktualizować tabelę klientów o najnowsze dane. W takim przypadku wykonam złączenie między tabelą docelową a tabelą źródłową za pomocą złączenia na identyfikatorze klienta.
Zobaczmy składnia zapytania SQL UPDATE z instrukcją 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 używać wielu tabel w instrukcji SQL UPDATE za pomocą JOIN
Weźmy dwie tabele, tabelę 1 i tabelę 2.
Utwórz tabelę 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'
Utwórz tabelę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 sprawdź zawartość tabeli.
SELECT * FROM table_1
SELECT * FROM table_2
Kol 1 | Kol 2 | Kol 3 | |
---|---|---|---|
1 | 1 | jedenaście | Pierwszy |
2 | jedenaście | 12 | Drugi |
3 | dwadzieścia jeden | 13 | Trzeci |
4 | 31 | 14 | Czwarty |
Kol 1 | Kol 2 | Kol 3 | |
---|---|---|---|
1 | 1 | dwadzieścia jeden | Dwa jeden |
2 | jedenaście | 22 | Dwa dwa |
3 | dwadzieścia jeden | 23 | Dwa trzy |
4 | 31 | 24 | Dwa cztery |
Naszym wymaganiem jest tabela 2 zawierająca dwa wiersze, w których Kol. 1 wynosi 21 i 31. Chcemy zaktualizować wartość z tabeli 2 do tabeli 1 dla wierszy, w których Kol. 1 wynosi 21 i 31.
Chcemy także zaktualizować tylko wartości Col 2 i Col 3.
Najprostszym i najczęstszym sposobem jest użycie klauzuli Join w instrukcji update i użycie wielu tabel w instrukcji update.
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)
Sprawdź zawartość tabeli
WYBIERZ Z tabeli 1
WYBIERZ Z tabeli 2
Kol 1 | Kol 2 | Kol 3 | |
---|---|---|---|
1 | 1 | jedenaście | Pierwszy |
2 | jedenaście | 12 | Drugi |
3 | dwadzieścia jeden | 23 | Dwa trzy |
4 | 31 | 24 | Dwa cztery |
Kol 1 | Kol 2 | Kol 3 | |
---|---|---|---|
1 | 1 | dwadzieścia jeden | Pierwszy |
2 | jedenaście | 22 | Drugi |
3 | dwadzieścia jeden | 23 | Dwa trzy |
4 | 31 | 24 | Dwa cztery |
Tutaj widzimy, że użycie klauzuli Join w instrukcji aktualizacji. Połączyliśmy dwie tabele za pomocą klauzuli Join.