我有两个名为supply
and的表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
这是两个不相互依赖的更新(用于更新)。如果需要一起完成,请在事务中完成
START TRANSACTION;
UPDATE supply SET IAR_NO = 9 WHERE IAR_NO = 0;
UPDATE equipment SET IAR_NO = 9 WHERE IAR_NO = 0;
COMMIT;
这种方式更明确,我会说更优雅,因为您可以看到实际更新的内容和价值。
如文档中所述,应该可以进行多表更新。
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。