logo

SQL ОНОВЛЕННЯ з JOIN

SQL UPDATE JOIN означає, що ми будемо оновлювати одну таблицю за допомогою іншої таблиці та умови з’єднання.

Розглянемо приклад таблиці клієнтів. Я оновив таблицю клієнтів, яка містить останні відомості про клієнтів з іншої вихідної системи. Я хочу оновити таблицю клієнтів останніми даними. У такому випадку я здійсню об’єднання між цільовою та вихідною таблицями за допомогою об’єднання за ідентифікатором клієнта.

Давайте подивимося синтаксис запиту SQL UPDATE із оператором 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 

Як використовувати кілька таблиць у операторі SQL UPDATE із JOIN

Давайте візьмемо дві таблиці, таблицю 1 і таблицю 2.

Створити таблицю 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' 

Створити таблицю 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' 

Тепер перевірте вміст таблиці.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Стовпець 1Стовпець 2Стовпець 3
11одинадцятьПерший
2одинадцять12друге
3двадцять один 13 По-третє
431 14 Четверте

Стовпець 1Стовпець 2Стовпець 3
11двадцять одинДва-Один
2одинадцять22Два-два
3двадцять один 23 Два-три
431 24 Два-Чотири

Наша вимога полягає в тому, щоб у нас була таблиця 2, яка містить два рядки, де стовпець 1 дорівнює 21 і 31. Ми хочемо оновити значення з таблиці 2 до таблиці 1 для рядків, де стовпець 1 дорівнює 21 і 31.

Ми також хочемо оновити лише значення стовпців 2 і 3.

Найпростішим і найпоширенішим способом є використання речення з’єднання в операторі оновлення та використання кількох таблиць у операторі оновлення.

 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) 

Перевірте зміст таблиці

ВИБРАТИ З таблиці 1

ВИБРАТИ З таблиці 2

Стовпець 1Стовпець 2Стовпець 3
11одинадцятьПерший
2одинадцять12друге
3двадцять один 23 Два-три
431 24 Два-Чотири

Стовпець 1Стовпець 2Стовпець 3
11двадцять одинПерший
2одинадцять22друге
3двадцять один 23 Два-три
431 24 Два-Чотири

Тут ми бачимо використання речення приєднання в операторі оновлення. Ми об’єднали дві таблиці за допомогою пункту об’єднання.