logo

SQL ATNAUJINIMAS naudojant JOIN

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 kolona2 plk3 plk
11vienuolikaPirmas
2vienuolika12Antra
3dvidešimt vienas 13 Trečias
431 14 Ketvirta

1 kolona2 plk3 plk
11dvidešimt vienasDu-Vienas
2vienuolika22Du-Du
3dvidešimt vienas 23 Du trys
431 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 kolona2 plk3 plk
11vienuolikaPirmas
2vienuolika12Antra
3dvidešimt vienas 23 Du trys
431 24 Du-Keturi

1 kolona2 pulk3 plk
11dvidešimt vienasPirmas
2vienuolika22Antra
3dvidešimt vienas 23 Du trys
431 24 Du-Keturi

Čia matome, kad atnaujinimo teiginyje naudojamas join sąlyga. Sujungėme dvi lenteles naudodami sujungimo sąlygą.