SQL 从几个表中删除

SQL DELETE FROM several tables

我有以下 tables:

数据集、链接、文件

数据集有一个名为 tiComplete 的字段,如果它为 0 则记录不完整,链接和文件都有一个引用数据集中记录的字段“biDataset”table。

我正在尝试创建一个查询,以删除 tiComplete = 0 的数据集、链接和文件中的所有条目,这就是我所拥有的:

      DELETE
            `datasets`.*,
            `links`.*,
            `files`.*
      FROM
            `datasets` `d`
      INNER JOIN
            `links` `l`
      ON
            `l`.biDataset=`d`.biPK
      INNER JOIN
            `files` `f`
      ON
            `f`.biDataset=`d`.biPK
      WHERE
            `d`.tiComplete=0;

然而,当我尝试保存包含这个的过程时,我得到:

SQL Error(1109): Unknown table `datasets` in MULTI DELETE

我正在使用 MariaDB 版本 10 和 HeidiSQL 版本 11.0.0.5919

您的多重 table 删除语法已关闭。使用此版本:

DELETE d, l, f
FROM datasets d
INNER JOIN links l ON l.biDataset = d.biPK
INNER JOIN files f ON f.biDataset = d.biPK
WHERE d.tiComplete = 0;

如果您为 table 设置了别名,就像您所做的那样,那么要删除其 table 的别名应该作为 CSV 列表出现在 DELETE 子句中。

请注意,我删除了各处丑陋的反引号,这不是必需的,只会混淆代码。此外,这里的另一种方法是研究级联删除。使用该方法,删除父项 table 中的记录将自动删除链接子项 table 中的所有记录。