繁体   English   中英

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

[英]Deleting From Multiple Tables When There Are Unmatched Records

我有一个使用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上的记录仍被删除。 我已经看到了一个接一个地从表中删除的选项,但是这个过程很漫长而忙碌。 有什么帮助吗?

如果要使对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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM