我有两个名为supply
和equipment
的表。这两个表有一个名为IAR_NO
现在,我想要的是使用单个查询更新,两个表中IAR_NO
都有0的所有记录。
对此最好的查询是什么?
我目前正在使用但不起作用
update supply, equipment
set supply.IAR_NO = "9", equipment.IAR_NO= "9 "
where equipment.IAR_NO = 0 and supply.IAR_NO = 0
答案 0 :(得分:6)
这两个更新不相互依赖(用于更新)。如果需要一起完成,请在交易中执行
START TRANSACTION;
UPDATE supply SET IAR_NO = 9 WHERE IAR_NO = 0;
UPDATE equipment SET IAR_NO = 9 WHERE IAR_NO = 0;
COMMIT;
这种方式更明确,我会说更优雅,因为你可以看到实际更新的内容和价值。
答案 1 :(得分: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。