【发布时间】:2012-01-10 00:40:12
【问题描述】:
我想更新具有多个连接的语句中的表。虽然我知道连接的顺序并不重要(除非您使用优化器提示),但我以某种方式对它们进行了排序,以便最直观地阅读。但是,这导致我要更新的表不是我开始使用的表,并且我无法更新它。
我想做的一个虚拟例子是这样的:
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;
这里有很多关于使用联接更新的帖子,但是它们总是首先更新表。我知道这在 SQL Server 中是可能的,希望在 MySQL 中也是可能的!
【问题讨论】:
-
您需要将
SET b.val = a.val+c.val放在FROM ...之前。见stackoverflow.com/questions/2334712/… -
此示例在 from 之后有 SET,并且该示例更新了连接顺序中的第一个表。我想在连接顺序中间更新一个表。
-
没关系。即使是这样,您也可以更改连接的顺序 (
tableB b JOIN tableA a ON a.a_id = b.a_id)。
标签: mysql join sql-update