在mySQL 5 TABLES中使用INNER JOIN删除多个表中的多行


Delete multiple rows in multiple table using INNER JOIN in mySQL 5 TABLES

我想运行这个查询,但它不起作用。有5个表要删除。

terms hav 1 row
term_taxonomy hav 1 row
term_relationships hav 1 row
post hav 5 rows
postmeta hav 5 rows

结构遵循wordpress nav_menu

我想在我的cms中使用这种结构。创建和检索做得很好,但我不知道为什么delete语句不起作用。。。

查询返回true,但行仍然存在。

以下是查询:

$query = "DELETE t, tt, tr, p, m 
FROM terms AS t
INNER JOIN term_taxonomy AS tt ON t.term_id = tt.term_id
INNER JOIN term_relationships AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
INNER JOIN post AS p ON tr.object_id = p.ID
INNER JOIN postmeta AS m ON m.object_id = p.ID
WHERE t.term_id = 1;"; 

在某个时刻,INNER JOIN条件会排除所有记录,因此不会删除任何内容。以下是您应该如何调试这样的东西:

DELETE语句更改为SELECT * FROM,如果是DELETE语句,则SELECT中返回的记录将被删除。

从最基本的查询开始,慢慢地将JOIN添加回

SELECT * FROM
FROM terms AS t
WHERE t.term_id = 1;

是否返回记录?好的所以在INNER JOIN term_taxonomy AS tt ON t.term_id = tt.term_id中添加回来。再次工作?很好,继续进行,直到查询停止返回结果(或者结果集明显不正确)。一旦结果消失,您就会知道,您添加的最后一个表没有要加入的记录,或者在这种情况下,您的JOIN .. ON条件可能不正确。