在mysql中单个查询中更新两个表

Enr*_*ico 1 mysql sql

我有两个名为supply和的表equipment.这两个表有一个名为的公共字段:IAR_NO

现在,我想要的是使用单个查询进行更新,两个表中包含0的所有记录IAR_NO.

什么可能是最好的查询?

我目前正在使用但不起作用

update supply, equipment 
set supply.IAR_NO =  "9", equipment.IAR_NO= "9 " 
where equipment.IAR_NO = 0 and supply.IAR_NO = 0
Run Code Online (Sandbox Code Playgroud)

SWe*_*eko 6

这两个更新不相互依赖(用于更新).如果他们需要一起完成,请在交易中完成

START TRANSACTION;
UPDATE supply SET IAR_NO =  9 WHERE IAR_NO = 0;
UPDATE equipment SET IAR_NO =  9 WHERE IAR_NO = 0;
COMMIT;
Run Code Online (Sandbox Code Playgroud)

这样它更明确,我会说更优雅,因为你可以看到实际更新的内容和价值.


her*_*arn 6

如文档中所述,应该可以使用多表更新.

http://dev.mysql.com/doc/refman/5.5/en/update.html

UPDATE supply a INNER JOIN equipment b ON (a.IAR_NO= b.IAR_NO)
SET a.IAR_NO =  "9" , b.IAR_NO =  "9"
WHERE equipment.IAR_NO = 0 and supply.IAR_NO = 0;
Run Code Online (Sandbox Code Playgroud)

注意:

如果您使用相同的数据更新两个表,则可能有更好的方法来设计数据库.请记住保持编程干燥.