【问题标题】:delete from 3 tables with one query用一个查询从 3 个表中删除
【发布时间】:2016-04-07 06:23:03
【问题描述】:

我有 3 个表,我不想在我的表中定义任何外键。 我的表格结构如下: tables diagram

我已经写了这个查询:

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 个表?

【问题讨论】:

  • DeleteSelect 的工作方式不同。
  • 当所有表都有要连接的东西时,此查询有效。你什么意思?
  • 我的意思是,您不能像您尝试的那样从表中删除选定的列。不确定你到底在做什么。建议浏览文档一次。
  • 根据这个link我可以做这样的事情
  • 该链接中问题的正确答案有两个查询,而不是一个。

标签: sql inner-join sql-delete


【解决方案1】:

如果所有表都有记录,则可以尝试使用 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 = ? 

此外,外键是个好东西,不使用它们通常是个坏主意。是的,一开始他们似乎很烦人,但试着把注意力集中在他们什么时候惹恼你。大多数情况下,当您以不应该的方式干预数据时,他们会这样做,如果没有它们,您将在您的数据库中导致数据不成本。

但是,这只是我的意见。

【讨论】:

  • tnx 兄弟。最佳答案:-D
猜你喜欢
  • 2012-07-28
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多