Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wordpress:SQL根据帖子标题清理帖子、术语、关系、分类法(和其他关联)_Sql_Wordpress_Taxonomy_Posts - Fatal编程技术网

wordpress:SQL根据帖子标题清理帖子、术语、关系、分类法(和其他关联)

wordpress:SQL根据帖子标题清理帖子、术语、关系、分类法(和其他关联),sql,wordpress,taxonomy,posts,Sql,Wordpress,Taxonomy,Posts,我需要一个SQL来清理我的wordpress数据库的文章标题 例如,以下内容将查找wordpress中标题中包含apple一词的所有帖子: SELECT * FROM wp_posts WHERE post_title LIKE '%apples%'; 这会删除相同的帖子: DELETE FROM wp_posts WHERE post_title LIKE '%apples%'; 然而,我不知道如何删除其他表中的所有引用,因为我不知道它们与wp_posts表的关系。我认为,在删除包含app

我需要一个SQL来清理我的wordpress数据库的文章标题

例如,以下内容将查找wordpress中标题中包含apple一词的所有帖子:

SELECT * FROM wp_posts WHERE post_title LIKE '%apples%';
这会删除相同的帖子:

DELETE FROM wp_posts WHERE post_title LIKE '%apples%';
然而,我不知道如何删除其他表中的所有引用,因为我不知道它们与wp_posts表的关系。我认为,在删除包含apple的帖子后,您可以通过以下方式从Posteta中删除与帖子相关的行:

DELETE FROM wp_postmeta WHERE NOT EXISTS (SELECT * FROM wp_posts WHERE wp_postmeta.post_id = wp_posts.ID)
这应该是可行的,因为在初始SQL命令之后,wp_posttea中现在有了与wp_posts表没有关系的行,并且删除了所述行。简单

但是我不确定如何删除类别和标记引用,因为除了第一次查询可能影响的任何其他表之外,我不确定wp_posts和wp_terms、wp_term_关系或wp_term_分类法之间的关系

有人能帮我吗


感谢您的考虑。

如果您的数据库支持级联,请使用它。您提出的deletesql或类似的东西是最后一搏。持有联接数据的列名不共享名称是很常见的;其他表中没有tablename.post\u id并不令人惊讶。

我不熟悉wordpress模式,但它不是又是post\u id吗?尽管如此,如果表启用了某些类型的引用完整性,删除post可能会自动删除所有相关行,即DELETE CASCADE.tablename.post_id在其他表中不存在,虽然看起来wp_term_relationships.object_id对应于wp_posttea.post_id和wp_posts.id,因此这似乎是这两个表之间的链接。假设我的理论是正确的,那么从不存在的wp_term_关系中删除,从wp_term_relationships.object_id=wp_posts.id的wp_posts.id中选择*在第一个sql运行后也应该可以在该表上运行。有人能帮我一步完成这两项工作吗…?我不知道有任何RDBMS允许您在多个数据库上运行更新或删除表ie-与工会。假设可以运行,您将需要编写某种脚本或存储过程。否则,一次只运行一次。。。