Запит UPDATE у MySQL — це оператор DML, який використовується для зміни даних таблиці. Запит UPDATE повинен вимагати пропозиції SET і WHERE. Речення SET використовується для зміни значень стовпця, указаного в реченні WHERE.
Речення JOIN у MySQL використовується в інструкції для отримання даних шляхом об’єднання кількох таблиць в одному запиті.
UPDATE JOIN — це оператор MySQL, який використовується для оновлення між таблицями, що означає, що ми можемо оновлювати одну таблицю за допомогою іншої таблиці з умовою пропозиції JOIN . Цей запит оновлює та змінює дані, на основі яких об’єднано більше ніж одну таблицю ПЕРВИННИЙ Ключ і ІНОЗЕМНІ Ключ і задана умова з’єднання. Ми можемо оновлювати один або кілька стовпців одночасно за допомогою ОНОВИТИ запит .
ПРИМІТКА. Оператор MySQL UPDATE JOIN підтримується з версії 4.0 або вище.
Синтаксис
Нижче наведено базовий синтаксис оператора UPDATE JOIN для зміни запису в таблиці MySQL:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
У наведеному вище синтаксисі MySQL UPDATE JOIN:
Спочатку ми вказали дві таблиці: основну таблицю (Tab1) і іншу таблицю (tab2) після пропозиції UPDATE. Після пропозиції UPDATE необхідно вказати принаймні одну таблицю. Далі ми вказали типи Речення JOIN , тобто або INNER JOIN, або ЛІВОГО ПРИЄДНАННЯ , які з’являються відразу після пропозиції UPDATE, а потім предикату об’єднання, зазначеного після ключового слова ON. Потім ми маємо призначити нові значення стовпцям у Tab1 та/або Tab2 для внесення змін у таблицю. Нарешті, умова пропозиції WHERE використовується для обмеження рядків для оновлення.
Як працює UPDATE JOIN у MySQL?
Робочий процес UPDATE JOIN в MySQL такий самий, як описано в наведеному вище синтаксисі. Але іноді ми виявляли, що лише цей запит виконує міжтабличне оновлення без жодних об’єднань. Наступний синтаксис є іншим способом оновлення однієї таблиці за допомогою іншої таблиці :
вибрати з кількох таблиць у sql
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
Наведений вище оператор UPDATE створює той самий результат, що й UPDATE JOIN з пропозиціями INNER JOIN або LEFT JOIN. Це означає, що ми можемо переписати наведений вище синтаксис як синтаксис UPDATE JOIN, показаний вище:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Розглянемо кілька прикладів, щоб зрозуміти, як працює оператор UPDATE JOIN у таблиці MySQL.
Приклади UPDATE JOIN
Спочатку ми створимо дві таблиці з іменами Продуктивність і Співробітник , і обидві таблиці пов’язані через зовнішній ключ. Тут «Ефективність» — це a батьківська таблиця , а 'Співробітники' – це дитина стіл . Наступні сценарії створюють обидві таблиці разом із їхніми записами.
Таблиця: Продуктивність
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Далі заповніть записи в таблиці за допомогою оператора INSERT.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Потім виконайте запит SELECT, щоб перевірити дані, як показано на зображенні нижче:
Таблиця: Співробітники
CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) );
Далі заповніть записи в таблиці за допомогою оператора INSERT.
INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000);
Потім виконайте запит SELECT, щоб перевірити дані, як показано на зображенні нижче:
Приклад UPDATE JOIN за допомогою INNER JOIN
Припустимо, ми хочемо оновити заробітна плата працівника за результатами роботи . Ми можемо оновити зарплату працівника в таблиці Employees за допомогою оператора UPDATE INNER JOIN, оскільки продуктивність відсоток зберігається в таблиці продуктивності.
У наведених вище таблицях ми повинні використовувати продуктивність поле для приєднання до таблиці «Співробітники та ефективність». Перегляньте запит нижче:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Після виконання наведеного вище оператора ми отримаємо наведений нижче результат, де ми бачимо, що стовпець зарплати працівника успішно оновлено.
Давайте розберемося, як цей запит працює в MySQL. У запиті ми вказали лише таблицю Employees після пропозиції UPDATE. Це тому, що ми хочемо змінити запис лише в таблиці Employees, а не в обох таблицях.
Запит перевіряє значення стовпця продуктивності для кожного рядка таблиці «Співробітники» зі стовпцем продуктивності таблиці «Ефективність». Якщо він отримає відповідний стовпець продуктивності, він бере відсоток у таблиці продуктивності та оновлює стовпець зарплати таблиці працівників. Цей запит оновлює всі записи в таблиці Employees, оскільки ми не вказали речення WHERE у запиті UPDATE JOIN.
Приклад UPDATE JOIN за допомогою LEFT JOIN
Щоб зрозуміти UPDATE JOIN з LEFT JOIN, нам спочатку потрібно вставити два нових рядки в таблицю Employees:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Оскільки ці працівники є новими працівниками, їхні результати роботи недоступні. Перегляньте наведений нижче результат:
Якщо ми хочемо оновити зарплату для новоприйнятих співробітників , ми не можемо використовувати запит UPDATE INNER JOIN. Це пов’язано з відсутністю даних про продуктивність у таблиці продуктивності. Таким чином, ми будемо використовувати оператор UPDATE LEFT JOIN, щоб задовольнити цю потребу.
Оператор UPDATE LEFT JOIN у MySQL використовується для оновлення рядка в таблиці, якщо у відповідному рядку іншої таблиці не знайдено записів.
Наприклад , якщо ми хочемо збільшити зарплату для новоприйнятого працівника на 2,5%, ми можемо зробити це за допомогою наступного оператора:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Після виконання наведеного вище запиту ми отримаємо вихідні дані, як показано на зображенні нижче, де ми бачимо, що зарплату новоприйнятих співробітників успішно оновлено.
У цій статті ми ознайомилися з інструкцією MySQL Update Join, яка дозволяє нам змінювати існуючі дані в одній таблиці новими даними з іншої таблиці за допомогою умови пропозиції JOIN. Цей запит корисний, коли нам потрібно змінити певні стовпці, указані в реченні WHERE разом із використанням пропозицій INNER JOIN або LEFT JOIN.