MySql更新连接表
我想在包含多个连接的语句中更新表。 虽然我知道连接的顺序并不重要(除非你使用优化器提示),但我命令它们以一种最直观的方式阅读。 但是,这会导致我想更新的表不是我开始使用的表,并且在更新时遇到问题。
我想要做的一个虚拟示例如下所示:
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中也是可行的!
MySQL中的多表UPDATE语法与Microsoft SQL Server不同。 您不需要说出要更新哪个表,这在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;
MySQL的语法中没有FROM子句。
UPDATE JOIN不是标准的SQL,MySQL和Microsoft SQL Server都实现了自己的想法,作为标准语法的扩展。
你有错误的命令排序。 你可以阅读这里的语法(我知道,这很难阅读。
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;
SQL小提琴
这个链接应该给你MySQL需要的语法,这里是一个例子。 你为什么需要加入这两张桌子? 是否限制记录更新? 我在问,因为你也可以做如下的事情:
update B set B.x=<value>
where
B.<value> is in(
select A.y
from A left outer join B on A.<value>=B.<value>
)
链接地址: http://www.djcxy.com/p/16879.html
上一篇: MySql Update A Joined Table
下一篇: Copy data from one existing row to another existing row in SQL?