MySQL UPDATE JOIN17 Mar 2025 | 5 分钟阅读 MySQL 中的 UPDATE 查询是一个 DML 语句,用于修改表中的数据。UPDATE 查询必须包含 SET 和 WHERE 子句。SET 子句用于更改 WHERE 子句中指定的列的值。 MySQL 中的 JOIN 子句用于在单个查询中连接多个表以检索数据。 UPDATE JOIN 是一个 MySQL 语句,用于执行跨表更新,这意味着我们可以使用 JOIN 子句条件来更新一个表的数据,使用另一个表中的数据。此查询基于 主键 和 外键 以及指定的连接条件来更新和修改多个已连接表的中的数据。我们可以使用 UPDATE 查询一次更新单个或多个列。 注意:MySQL UPDATE JOIN 语句支持版本 4.0 及以上版本。语法以下是修改 MySQL 表中记录的 UPDATE JOIN 语句的基本语法 在上述 MySQL UPDATE JOIN 语法中 首先,我们在 UPDATE 子句后指定了两个表:主表 (Tab1) 和另一个表 (tab2)。UPDATE 子句后,至少需要指定一个表。接下来,我们在 UPDATE 子句后指定了 JOIN 子句的类型,例如 INNER JOIN 或 LEFT JOIN,然后在 ON 关键字后指定连接谓词。然后,我们必须为 Tab1 和/或 Tab2 中的列分配新值以进行修改。最后,使用 WHERE 子句条件来限制更新的行。 MySQL 中的 UPDATE JOIN 如何工作?MySQL 中 UPDATE JOIN 的工作过程与上述语法中描述的相同。但有时,我们会发现此查询本身就能执行跨表更新,而无需涉及任何连接。以下语法是使用另一个表更新一个表的另一种方法。 上述 UPDATE 语句产生的效果与带有 INNER JOIN 或 LEFT JOIN 子句的 UPDATE JOIN 相同。这意味着我们可以将上述语法重写为上面显示的 UPDATE JOIN 语法。 让我们举一些例子来理解 UPDATE JOIN 语句在 MySQL 表中的工作原理。 UPDATE JOIN 示例首先,我们将创建两个名为 **Performance** 和 **Employee** 的表,这两个表通过外键关联。在这里,“Performance”是 **父表**,“Employees”是 **子表**。以下脚本创建了这两个表及其记录。 表:Performance 接下来,使用 INSERT 语句向表中填充记录。 然后,执行 SELECT 查询以验证数据,如下图所示 ![]() 表:Employees 接下来,使用 INSERT 语句向表中填充记录。 然后,执行 SELECT 查询以验证数据,如下图所示 ![]() 使用 INNER JOIN 的 UPDATE JOIN 示例假设我们要 **根据员工的表现更新员工的薪资**。我们可以使用 UPDATE INNER JOIN 语句更新 Employees 表中的员工薪资,因为绩效 **百分比** 存储在 Performance 表中。 在上述表中,我们需要使用 **performance** 字段连接 Employees 表和 Performance 表。请看下面的查询 执行上述语句后,我们将得到以下输出,其中可以看到员工的薪资列已成功更新。 ![]() 让我们理解一下这个查询在 MySQL 中是如何工作的。在查询中,我们在 UPDATE 子句后只指定了 Employees 表。这是因为我们只想在 Employees 表中更改记录,而不是在两个表中都更改。 该查询会检查“Employees”表中每一行的 performance 列值是否与“Performance”表的 performance 列值匹配。如果找到匹配的 performance 列,则它会从 Performance 表中获取百分比,并更新 Employees 表的 salary 列。此查询会更新 Employees 表中的所有记录,因为我们在 UPDATE JOIN 查询中没有指定 WHERE 子句。 使用 LEFT JOIN 的 UPDATE JOIN 示例为了理解带有 LEFT JOIN 的 UPDATE JOIN,我们首先需要向 Employees 表中插入两条新记录 由于这些是新员工,因此他们的绩效记录尚不可用。请看下面的输出 ![]() 如果我们想更新新入职员工的薪资,则无法使用 UPDATE INNER JOIN 查询。这是因为 Performance 表中缺少他们的绩效数据。因此,我们将使用 UPDATE LEFT JOIN 语句来满足此需求。 MySQL 中的 UPDATE LEFT JOIN 语句用于在表中更新某一行,当另一表中没有找到相应的记录时。 例如,如果我们想将新入职员工的薪资提高 2.5%,可以使用以下语句来实现 执行上述查询后,我们将得到如下输出图像,其中可以看到新入职员工的薪资已成功更新。 ![]() 在本文中,我们学习了 MySQL Update Join 语句,它允许我们使用 JOIN 子句条件,通过另一个表中的新数据来修改表中的现有数据。当我们需要修改 WHERE 子句中指定的某些列,并同时使用 INNER JOIN 或 LEFT JOIN 子句时,此查询非常有用。 下一主题MySQL EquiJoin |
我们请求您订阅我们的新闻通讯以获取最新更新。