使用反向表顺序更新 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中文网其他相关文章!