1

我有两个名为supplyand的表equipment。这两个表有一个共同的字段,名为:IAR_NO

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

什么是最好的查询?

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

update supply, equipment 
set supply.IAR_NO =  "9", equipment.IAR_NO= "9 " 
where equipment.IAR_NO = 0 and supply.IAR_NO = 0
4

2 回答 2

6

这是两个不相互依赖的更新(用于更新)。如果需要一起完成,请在事务中完成

START TRANSACTION;
UPDATE supply SET IAR_NO =  9 WHERE IAR_NO = 0;
UPDATE equipment SET IAR_NO =  9 WHERE IAR_NO = 0;
COMMIT;

这种方式更明确,我会说更优雅,因为您可以看到实际更新的内容和价值。

于 2013-10-01T06:53:41.177 回答
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;

笔记:

如果您要更新具有相同数据的两个表,则可能有更好的方法来设计您的数据库。记得保持你的编程DRY

于 2013-10-01T06:54:43.200 回答