我正在尝试使用如下所示的查询在一个查询中更新两个表:
$query = "UPDATE tblproducts, tblsideimages
SET tblproducts.prodCode='oj', tblsideimages.prodCode='oj'
WHERE tblproducts.prodCode='aj'
AND tblsideimages.prodCode='aj'";
如果tblsideimages中有内容,例如那个,但是如果tblsideimages没有内容则无效。
问题在于我必须相应地进行调整,因为并不总是在tblsideimages中会有内容。有时,用户可以添加仅在tblproducts中插入的数据。我如何才能做到这一点,如果tblsideimages中没有内容,它仍然适用于tblproducts,如果tblsideimages和tblproducts都有内容,两者都会更新。谢谢!
答案 0 :(得分:2)
没有办法(和真正的理由)在一个查询中完成所有工作。所以只需将其拆分为:
UPDATE tblproducts SET prodCode='oj' WHERE prodCode='aj'
UPDATE tblsideimages SET prodCode='oj' WHERE prodCode='aj'
较少的查询并不意味着“性能更高”,因此请不要按照这个想法将所有内容都放入一个查询中。
答案 1 :(得分:0)
您可以使用存储过程执行此操作 - 在事务中使用update语句编写存储过程。
使用回滚,您可以确保将它们视为一个工作单元,即它们都被执行或者都不执行,以保持数据的一致性。
或执行多个查询,例如
$query="UPDATE tblproducts
SET tblproducts.prodCode='oj'
WHERE tblproducts.prodCode='aj';
UPDATE tblsideimages
SET tblsideimages.prodCode='oj'
WHERE tblsideimages.prodCode='aj'";