我有以下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
但是,从我在线阅读的内容来看,上面的代码似乎并没有真正删除帖子的元信息,所以我还有一堆剩余的数据
我的问题是,如何修改此代码,以便从已删除的帖子中删除所有相关元信息?
由于
答案 0 :(得分:10)
您可以通过连接表来删除数据。在WP wp_posts
中,wp_postmeta
与post_id
表中的wp_postmeta
相关联。使用下面的查询,它将从两个表中删除。但是还有其他选项,你可以在wp_posts
上删除之后触发一个触发器来删除相关表中的数据或删除级联中的外键约束
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