你肯定可以
delete from multiple tables in one statement with MySQL.你的要求将使用类似以下查询的东西:
DELETE
menu, pages
FROM
menu JOIN pages
WHERE
menu.name = 'some name' AND
pages.title = 'some title'
要么:
DELETE FROM
menu, pages
USING
menu JOIN pages
WHERE
menu.name = 'some name' AND
pages.title = 'some title'
但是这些例子有一个问题:两个值都必须存在才能实现.
我认为应该有更多的方法来获得理想的结果,没有这个约束(我会想到使用其他类型的JOIN),但我无法弄清楚它应该如何工作.
如果要删除的行以某种方式使用外键相互链接(并且您没有对InnoDB表使用外键约束),那么执行您想要的操作应该更加容易.这样的事情应该适用于:
DELETE
menu, pages
FROM
menu LEFT JOIN pages
ON menu.pageId = page.id # using imagined columns here
WHERE # this where clause might be redundant then
menu.name = 'some name' AND
pages.title = 'some title'
但是要小心这些例子.首先在测试环境中进行实验,因为我不确定100%的确切含义是否诚实;我只想提供一个提示,即可以一次删除多个表.