首页 >数据库 >mysql教程 >当目标表不是第一个表时,如何更新 MySQL 中的联接表?

当目标表不是第一个表时,如何更新 MySQL 中的联接表?

Linda Hamilton
Linda Hamilton原创
2024-11-29 18:44:11234浏览

How to Update a Joined Table in MySQL When the Target Table Isn't First?

使用反向表顺序更新 MySQL 中的联接表

当以下情况时,更新联接语句中涉及的表的任务可能具有挑战性:所需的表不在开头。在 MySQL 中,与 SQL Server 不同,多表更新的语法有所不同,从而解决了此问题。

考虑以下示例,其中目标是更新表“b”:

UPDATE b
FROM tableA a
JOIN tableB b
   ON a.a_id = b.a_id
JOIN tableC c
   ON b.b_id = c.b_id
SET b.val = a.val+c.val
WHERE a.val > 10
    AND c.val > 10;

在MySQL中,带有JOIN子句的UPDATE语句的语法不指定要更新的表。相反,它是由 SET 子句隐式确定的。

因此,为了实现所需的更新,可以使用以下修改后的语法:

UPDATE tableA a
JOIN tableB b
   ON a.a_id = b.a_id
JOIN tableC c
   ON b.b_id = c.b_id
SET b.val = a.val+c.val
WHERE a.val > 10
    AND c.val > 10;

需要注意的是,使用 JOIN 的 UPDATE语法不是标准 SQL 规范的一部分,MySQL 和 Microsoft SQL Server 都实现了自己的变体。

以上是当目标表不是第一个表时,如何更新 MySQL 中的联接表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn