当记录不匹配时从多个表中删除

时间:2017-04-12 13:23:49

标签: mysql

我有一个使用mysql的查询,如下所示:

Delete A, B, C 
FROM FROM  A 
INNER JOIN B 
ON         A.a = B.a 
INNER JOIN C 
ON         B.c = C.c 
WHERE      A.a = 'value'.

如果找到匹配的记录,此查询可以正常工作。 但在我的情况下,可能会出现在表B和C上找不到匹配记录的情况。当发生这种情况时,我仍然希望表A上的记录仍然被删除。 我已经看到了从表中一个接一个地删除的选项,但是这个过程很漫长而且很忙。 关于如何解决这个问题的任何帮助?

1 个答案:

答案 0 :(得分:0)

如果您想要加入B和C可选,那么您应该使用LEFT JOIN而不是INNER JOIN

例如,像这样的查询应该完成您要执行的操作:

 Delete A, B, C 
 FROM  A 
 LEFT JOIN B 
 ON         A.a = B.a 
 LEFT JOIN C 
 ON         B.c = C.c 
 WHERE      A.a = 'value'