只有一个约束的多删除

Multi delete with only one constraint

我有 3 个表,比方说 a、b、c,它们都有一个带有 ID 的列。当来自不同表的行彼此属于彼此时,ID 对应。我想使用 id 从表中删除所有条目。我尝试了以下多重删除:

delete from a,b,c from a,b,c where a.id=123;

以下内容无效

delete from a,b,c from a,b,c where a.id=b.id and b.id=c.id and c.id=123;

因为当 a 和 b 中有一个元素用于 a 或仅在 a 中用于给定 id 时,c 中没有一个元素是强制性的。

根据 the documentation 语法是:

delete a,b,c 
from a
LEFT JOIN b ON a.id = b.id
LEFT JOIN c ON a.id = c.id 
where a.id=123;

我会设置一个数组并使用它来命名要从具有您要查找的 ID 的每个 table 名称中删除的 table。这样,如果 id 是外键 id,您将拥有更多控制权。 运行 这通过一个 foreach 循环。

$table = array(tablea => a, id =>a), array(tableb => b, id => b)

$sql = "DELETE FROM $table WHERE $where";