3

我需要一个 SQL 来通过 post_title 清理我的 wordpress 数据库。

例如,以下内容从 wordpress 中查找标题中包含单词“apple”的所有帖子:

SELECT * FROM wp_posts WHERE post_title LIKE '%apples%';

这会删除那些相同的帖子:

DELETE FROM wp_posts WHERE post_title LIKE '%apples%';

但是,我不确定如何按标题删除其他表中的所有引用,因为我不知道它们与 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 之间的关系(除了可能受第一个查询影响的任何其他表)。

有人可以在这里帮助我吗?

谢谢大家的考虑。

4

1 回答 1

0

如果您的数据库支持级联,请使用它。您提出的 DELETE SQL 或类似的东西是最后的东西。保存连接数据的列名不共享名称是很常见的;其他表中没有 tablename.post_id 不足为奇。

于 2012-07-17T23:02:05.920 回答