logo

SQL UPDATE ar JOIN

SQL UPDATE JOIN nozīmē, ka mēs atjaunināsim vienu tabulu, izmantojot citu tabulu un pievienosim nosacījumu.

Ņemsim klientu tabulas piemēru. Esmu atjauninājis klientu tabulu, kurā ir jaunākā informācija par klientu no citas avota sistēmas. Es vēlos atjaunināt klientu tabulu ar jaunākajiem datiem. Šādā gadījumā es veicu savienošanu starp mērķa tabulu un avota tabulu, izmantojot klienta ID savienošanu.

Apskatīsim sintakse SQL UPDATE vaicājums ar JOIN priekšrakstu.

 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 

Kā izmantot vairākas tabulas SQL UPDATE priekšrakstā ar JOIN

Ņemsim divas tabulas, 1. un 2. tabulu.

Izveidot tabulu1

 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' 

Izveidot tabulu2

 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' 

Tagad pārbaudiet tabulas saturu.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
1. kolonna2. kolonna3. kolonna
11vienpadsmitPirmkārt
2vienpadsmit12Otrkārt
3divdesmitviens 13 Trešais
431 14 Ceturtais

1. kolonna2. kolonna3. kolonna
11divdesmitviensDivi-Viens
2vienpadsmit22Divi-Divi
3divdesmitviens 23 Divi-Trīs
431 24 Divi-Četri

Mūsu prasība ir tāda, ka mums ir jābūt 2. tabulai, kurā ir divas rindas, kur 1. kolonna ir 21 un 31. Mēs vēlamies atjaunināt vērtību no 2. tabulas uz 1. tabulu tām rindām, kurās 1. kolonna ir 21 un 31.

Mēs vēlamies arī atjaunināt tikai 2. un 3. kolonnas vērtības.

Vienkāršākais un izplatītākais veids ir izmantot pievienošanās klauzulu atjaunināšanas priekšrakstā un izmantot vairākas tabulas atjaunināšanas priekšrakstā.

 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) 

Pārbaudiet tabulas saturu

IZVĒLĒTIES NO 1. tabulas

IZVĒLĒTIES NO 2. tabulas

1. kolonna2. kolonna3. kolonna
11vienpadsmitPirmkārt
2vienpadsmit12Otrkārt
3divdesmitviens 23 Divi-Trīs
431 24 Divi-Četri

1. kolonna2. kolonna3. kolonna
11divdesmitviensPirmkārt
2vienpadsmit22Otrkārt
3divdesmitviens 23 Divi-Trīs
431 24 Divi-Četri

Šeit mēs redzam, ka atjaunināšanas paziņojumā tiek izmantota pievienošanās klauzula. Mēs esam apvienojuši divas tabulas, izmantojot savienošanas klauzulu.