我需要一个SQL来通过post_title来清理我的wordpress数据库 .
例如,以下内容查找wordpress中包含 Headers 中“apple”一词的所有帖子:
SELECT * FROM wp_posts WHERE post_title LIKE '%apples%';
这删除了相同的帖子:
DELETE FROM wp_posts WHERE post_title LIKE '%apples%';
但是,我不知道如何通过 Headers 删除其他表中的所有引用很好,因为我不知道它们与wp_posts表的关系 . 我认为您可以通过以下删除包含“apple”的帖子后从postmeta中删除与帖子相关的行:
DELETE FROM wp_postmeta WHERE NOT EXISTS (SELECT * FROM wp_posts WHERE wp_postmeta.post_id = wp_posts.ID)
这应该有效,因为在初始SQL命令之后,您现在在wp_postmeta中有行而没有与wp_posts表的关系并删除所述行 . 简单 .
但我不知道如何删除类别和标记引用,因为我不确定wp_posts和wp_terms,wp_term_relationships或wp_term_taxonomy之间的关系(除了可能受第一个查询影响的任何其他表) .
有人可以帮我吗?
谢谢你的所有考虑 .
1 回答
如果您的数据库支持级联,请使用它 . 您提出的DELETE SQL或类似的东西是最后的东西 . 保持连接数据的列名不共享名称很常见;其他表中缺少tablename.post_id并不令人惊讶 .