MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL UPDATE JOIN

MySQL中的UPDATE查询是用于修改表数据的DML语句。 UPDATE查询必须要求SET和WHERE子句。 SET子句用于更改WHERE子句中指定的列的值。
MySQL中的JOIN子句在该语句中用于通过在单个查询中联接多个表来检索数据。
UPDATE JOIN是用于执行跨表更新的MySQL语句,这意味着我们可以使用具有JOIN子句条件的另一个表来更新一个表。此查询根据 PRIMARY 键更新和更改连接多个表的数据>和 FOREIGN 键以及指定的加入条件。我们可以使用 UPDATE查询一次更新一个或多个列。
注意: 4.0或更高版本支持MySQL UPDATE JOIN语句。

语法

以下是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语法中:
首先,我们在UPDATE子句之后指定了两个表: 主表(Tab1)和另一个表(tab2)。在UPDATE子句之后,需要指定至少一个表。接下来,我们指定了 JOIN子句的类型,即 INNER JOIN 或 LEFT JOIN UPDATE子句,然后在ON关键字之后指定连接谓词。然后,我们必须将新值分配给Tab1和/或Tab2中的列,以便在表中进行修改。最后, WHERE子句条件用于限制更新行。

UPDATE JOIN在MySQL中如何工作?

MySQL 中的UPDATE JOIN工作过程与以上语法中描述。但是有时,我们会发现此查询仅执行交叉表更新而没有涉及任何联接。 以下语法是使用另一个表更新一个表的另一种方式:
UPDATE Tab1, Tab2, 
SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression 
WHERE Tab1.C1 = Tab2.C1 AND condition;
上面的UPDATE语句产生的结果与带有INNER JOIN或LEFT JOIN子句的UPDATE 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例子

首先,我们将创建两个名为Performance和Employee的表,并且这两个表都是通过外键关联的。在这里,“Performance”是一个父表,而“Employee”是子 表。以下脚本创建两个表及其记录。
表: 性能
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查询以验证数据,如下图所示:
MySQL更新加入
表: 员工
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查询以验证数据,如下图所示:
MySQL更新Join

使用INNER JOIN示例进行更新JOIN

假设我们要根据 雇员的工资来更新他们的工资。因为绩效 percentage 存储在绩效表中,所以我们可以在UPDATE表中使用UPDATE INNER JOIN语句来更新雇员的工资。
在上面的表中,我们必须使用 绩效字段加入"员工和绩效"表。请参阅以下查询:
UPDATE Employees e
INNER JOIN Performance p 
ON e.performance = p.performance
SET salary = salary + salary * percentage;
执行上面的语句后,我们将获得以下输出,我们可以看到员工的薪水列已成功更新。
MySQL Update Join
让我们了解此查询在MySQL中的工作方式。在查询中,我们仅在UPDATE子句之后指定了Employees表。这是因为我们只想更改Employees表中的记录,而不要同时更改两个表中的记录。
该查询会针对" Employees"表中每一行的性能列值与"效果"表。如果它将获得匹配的绩效列,则它将获取"绩效"表中的百分比并更新"雇员"表的"薪水"列。该查询更新了Employees表中的所有记录,因为我们没有在UPDATE JOIN查询中指定WHERE子句。

使用LEFT JOIN示例的UPDATE JOIN

要了解使用LEFT JOIN进行UPDATE JOIN,我们首先需要在Employees表中插入两行:
INSERT INTO Employees (name, performance, salary)
VALUES('William', null, 73000),
      ('Rayan', null, 92000);
由于这些员工是新员工,所以他们的绩效记录不可用。参见以下输出:
MySQL Update Join
如果我们要更新工资对于新雇用的员工,我们不能使用UPDATE INNER JOIN查询。这是由于"性能"表中的性能数据不可用。因此,我们将使用UPDATE LEFT JOIN语句来满足此需求。
当另一个表的对应行中没有记录时,MySQL中的UPDATE LEFT JOIN语句用于更新表中的行。
例如,如果我们想将新雇用的员工的薪水提高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
在本文中,我们学习了MySQL Update Join语句,该语句使我们能够使用一个新表更改另一个表中的现有数据。 JOIN子句条件。当我们需要修改WHERE子句中指定的某些列以及使用INNER JOIN或LEFT JOIN子句时,此查询非常有用。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4