一条查询删除三个表中的数据

4
我有3张表,我不想在我的表中定义任何外键。我的表结构如下:表格图 我写了这个查询:
delete relativedata, crawls, stored
    from relativedata inner join
         crawls
         on relativedata.crawl_id = crawls.id and
            relativedata.id = ? inner join
         stored
         on stored.crawl_id = crawls.id

这个查询对我来说有效,除非其中一个表没有记录。现在我该如何在一个查询中删除3个表的内容?

“Delete”和“Select”不以相同的方式工作。 - Rahul
当所有表都有要连接的内容时,此查询有效。你的意思是什么? - Mahdi
我的意思是,你不能像你现在尝试的那样从表中删除选定的列。不确定你具体想做什么。建议先仔细阅读文档。 - Rahul
请查看此链接:https://dev59.com/E3M_5IYBdhLWcg3wyWSt#1233479 - Mahdi
你使用的是哪个数据库?请适当标记你的问题。 - Gordon Linoff
显示剩余5条评论
1个回答

4
如果所有表都有记录,可以尝试使用LEFT JOIN而不是INNER JOIN。此外,您的连接条件有些混乱。请尝试按照以下方式进行连接:
如果所有表都有记录,可以尝试使用LEFT JOIN而不是INNER JOIN。此外,您的连接条件有些混乱。请尝试按照以下方式进行连接:
delete 
    relativedata, crawls, stored
from
    relativedata 
LEFT join crawls on relativedata.crawl_id = crawls.id
LEFT join stored on relativedata.crawl_id = stored.crawl_id
WHERE
    relativedata.id = ? 

此外,外键是一件好事情,不使用它们通常是一个坏主意。是的,一开始它们似乎很烦人,但试着关注它们令你恼火的时候。大多数情况下,当你以不应该的方式干涉数据时,它们会这样做,并且如果没有它们,您会在数据库中引起数据不一致性。
但这只是我的意见。

谢谢兄弟。最佳答案 :-D - Mahdi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接