我有一个查询:如果存在于更新句话的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中?
我有一个查询:如果存在于更新句话的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中?
我假设“不存在”的意思是它可以是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值更新然后将查询应该是OK当areID为NULL,则它不匹配的情况。
Thank you it works – 2013-04-04 05:28:14
它看起来像你想设置的a
两个b
和c
的deleted
列,以及任何相应的(孩子)的deleted
列行。
要accompish,你可以做这样的事情:
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'
逗号加盟商在原有的声明等同于“INNER JOIN”。当b
或c
中不存在子行时,原始语句不会更新任何行。
通过使用外部联接,该语句可以从a
更新行(S),即使子行不b
和/或c
存在,以及在b
和和c
更新了相应的子行。
不会存在是NULL值。 – 2013-04-04 05:00:32
据我所知,在'UPDATE'语句里面没有'LEFT JOIN'这样的东西:) – 2013-04-04 05:02:15