SQL ATNAUJINIMO PRISIJUNGTI reiškia, kad vieną lentelę atnaujinsime naudodami kitą lentelę ir sujungimo sąlygą.
Paimkime klientų lentelės pavyzdį. Atnaujinau klientų lentelę, kurioje yra naujausia informacija apie klientus iš kitos šaltinio sistemos. Noriu atnaujinti klientų lentelę naujausiais duomenimis. Tokiu atveju aš atliksiu sujungimą tarp tikslinės lentelės ir šaltinio lentelės naudodamas prisijungimą kliento ID.
Pažiūrėkime, sintaksė SQL UPDATE užklausos su JOIN sakiniu.
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
Kaip naudoti kelias lenteles SQL UPDATE sakinyje su JOIN
Paimkime dvi lenteles, 1 lentelę ir 2 lentelę.
Sukurti lentelę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'
Sukurti lentelę 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'
Dabar patikrinkite lentelės turinį.
SELECT * FROM table_1
SELECT * FROM table_2
1 kolona | 2 plk | 3 plk | |
---|---|---|---|
1 | 1 | vienuolika | Pirmas |
2 | vienuolika | 12 | Antra |
3 | dvidešimt vienas | 13 | Trečias |
4 | 31 | 14 | Ketvirta |
1 kolona | 2 plk | 3 plk | |
---|---|---|---|
1 | 1 | dvidešimt vienas | Du-Vienas |
2 | vienuolika | 22 | Du-Du |
3 | dvidešimt vienas | 23 | Du trys |
4 | 31 | 24 | Du-Keturi |
Reikalaujame, kad turėtume 2 lentelę, kurioje būtų dvi eilutės, kuriose 1 stulpelis yra 21 ir 31. Norime atnaujinti 2 lentelės reikšmę į 1 lentelę eilučių, kuriose 1 stulpelis yra 21 ir 31.
Taip pat norime atnaujinti tik 2 ir 3 stulpelio reikšmes.
Paprasčiausias ir labiausiai paplitęs būdas yra naudoti prisijungimo sąlygą atnaujinimo sakinyje ir naudoti kelias lenteles atnaujinimo sakinyje.
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)
Patikrinkite lentelės turinį
PASIRINKTI IŠ 1 lentelės
PASIRINKTI IŠ 2 lentelės
1 kolona | 2 plk | 3 plk | |
---|---|---|---|
1 | 1 | vienuolika | Pirmas |
2 | vienuolika | 12 | Antra |
3 | dvidešimt vienas | 23 | Du trys |
4 | 31 | 24 | Du-Keturi |
1 kolona | 2 pulk | 3 plk | |
---|---|---|---|
1 | 1 | dvidešimt vienas | Pirmas |
2 | vienuolika | 22 | Antra |
3 | dvidešimt vienas | 23 | Du trys |
4 | 31 | 24 | Du-Keturi |
Čia matome, kad atnaujinimo teiginyje naudojamas join sąlyga. Sujungėme dvi lenteles naudodami sujungimo sąlygą.