我想运行这个查询,但它不起作用。有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
条件可能不正确。