繁体   English   中英

使用一个查询从3个表中删除

[英]delete from 3 tables with one query

我有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

除非其中一个表没有记录,否则此查询适用于我。 现在如何在1个查询中的3个表中删除?

如果所有表都有记录,则可以使用INNER JOIN的LEFT JOIN实例。 此外,你有一些混乱你加入ON条件。 试试这样:

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 = ? 

此外,foregin键是好事,不使用它们通常是个坏主意。 是的,他们一开始似乎很讨厌,但是当他们惹恼你的时候,我们会集中注意力。 大多数时候,当你以某种方式干预数据时,他们会这样做,你不应该这样做,没有它们你会导致你的数据库中的数据不可靠。

但是,这只是我的意见。

暂无
暂无

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

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