Mysql Wordpress SQL删除自定义帖子类型和元数据

Mysql Wordpress SQL删除自定义帖子类型和元数据,mysql,wordpress,Mysql,Wordpress,我有下面的SQL查询,它能够获取和删除超过X天的自定义帖子类型的所有帖子 SELECT * FROM `wp_posts` WHERE `post_type` = ‘clothing’ AND DATEDIFF(NOW(), `post_date`) > 2 DELETE * FROM `wp_posts` WHERE `post_type` = ‘clothing’ AND DATEDIFF(NOW(), `post_date`) > 2 然而,从我在网上看到的情况来看,上面的

我有下面的SQL查询,它能够获取和删除超过X天的自定义帖子类型的所有帖子

SELECT * FROM `wp_posts`
WHERE `post_type` = ‘clothing’
AND DATEDIFF(NOW(), `post_date`) > 2

DELETE * FROM `wp_posts`
WHERE `post_type` = ‘clothing’
AND DATEDIFF(NOW(), `post_date`) > 2
然而,从我在网上看到的情况来看,上面的代码似乎并没有真正删除帖子的元信息,所以我仍然会有一堆剩余的数据

我的问题是,我如何修改这个代码,以便所有相关的元信息也从删除的帖子中删除


谢谢

您可以通过加入表来删除数据。在WP
WP_中,posts
WP_postmeta
WP_postmeta
表中的
post_id
相关。使用下面的查询,它将从两个表中删除。但是,还有其他选项,即您可以在
wp_posts
上删除后触发触发器,以从相关表中删除数据,或使用on delete cascade删除外键约束

delete
p,pm
from wp_posts p
join wp_postmeta pm on pm.post_id = p.id
where p.post_type = 'clothing'
and DATEDIFF(NOW(), p.post_date) > 2

我将Mac OS的文本编辑器与纯文本模式结合使用。在这种情况下,请取消选中“编辑>替换>智能报价”下的“智能报价”-或者在这些天的任何位置。我尝试了此查询,但由于某种原因,PHPMyAdmin告诉我,p,pm会导致错误。我用*替换了它,这很有效。在这种情况下这也是正确的吗?错误?p和pm只是别名,不应该给出错误。这里是一个演示。很抱歉,错误是由我用select替换了delete引起的。这非常好:)有点晚了,但是对于其他阅读本文的人来说,请确保在wp_posteta上使用LEFT-JOIN;否则,任何当前没有与之关联的元数据的帖子都将保留在数据库中。对于wp使用非默认数据库前缀的情况,不要忘记使用
$wpdb->prefix
,而不要使用
wp