【发布时间】:2012-03-25 14:24:40
【问题描述】:
我正在尝试使用如下所示的查询在一个查询中更新两个表:
$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 都有内容,两者都会更新。谢谢!
【问题讨论】:
-
只需将其拆分为 2 个查询。绝对没有理由在一个查询中执行它(在这种特殊情况下)
-
@Icarus:哎呀,我错误地复制了条件。好吧,正如我所说,隐式连接(由逗号分隔的表列表定义)是
INNER JOIN,因此如果连接的右侧为空,您将得到空结果集。所以IFNULL(tblsideimages.prodCode,'aj')不起作用,因为tblsideimages.prodCode不等于null,但它不存在(这适用于INNER JOIN)。如果它是LEFT JOIN,你的代码就可以工作