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 中的所有记录。
我有以下 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 中的所有记录。