如果存在更新语句mysql

时间:2013-04-04 04:55:50

标签: mysql

我有下一个查询:

UPDATE a, b, c SET a.deleted=1, b.deleted=1, c.deleted=1 
WHERE a.id='$aID' AND a.com='$comID' AND b.areID=a.id AND c.areID=a.id

问题是有时候c.areID不会存在,对于b.areID来说也是一样的,所以,如果在MySQL中存在任何句子生命或类似的东西吗?

2 个答案:

答案 0 :(得分:1)

我认为“不存在”是指它可以为NULL。

UPDATE a, b, c SET a.deleted=1, b.deleted=1, c.deleted=1 
WHERE a.com='$comID' AND a.id='$aID' AND (b.areID=a.id OR b.areID IS NULL) 
AND (c.areID=a.id or c.areID IS NULL)

如果您不想使用NULL值进行更新,那么您的查询应该没问题,因为当areID为NULL时,它与条件不匹配。

答案 1 :(得分:1)

您好像要设置deleted的{​​{1}}列,以及adeleted中任何相应(子)行的b列{1}}。

为此,您可以这样做:

c

原始语句中的逗号连接运算符等效于“INNER JOIN”。当UPDATE a LEFT JOIN b ON b.areID=a.id LEFT JOIN c ON c.areID=a.id SET a.deleted=1 , b.deleted=1 , c.deleted=1 WHERE a.id='$aID' AND a.com='$comID' b中不存在子行时,原始语句不会更新任何行。

通过使用外部联接,即使c和/或a中不存在子行,该语句也可以从b更新行。更新cb中的相应子行。