如果在更新语句mysql上存在
我有下一个问题:如果在更新语句mysql上存在,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中是否存在类似的句子生命?我假设“不存在”意味着它可以为空 UPDATE a, b, c SET a.deleted=1, b.deleted=1,
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中是否存在类似的句子生命?我假设“不存在”意味着它可以为空
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)
如果您不想使用空值更新,那么您的查询应该是正常的,因为当areID为空时,它与条件不匹配。看起来您想设置
a
的deleted
列,以及b
和c
中任何对应(子)行的deleted
列
为此,您可以执行以下操作:
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
和/或c
中不存在子行,以及更新b
和c
中相应的子行时,不存在的值为空值。据我所知,在UPDATE
语句中没有左连接这样的东西:)