如何通过SQL查找缺少帖子的元条目?

时间:2014-04-22 作者:James Kemp

我希望编写一个SQL查询来执行以下操作:

选择meta\\u值=不存在的帖子id的所有postmeta行。

例如,postmeta\\u值可能等于235。通常情况下,这与ID为235的帖子(附件)有关,但它已被删除。我想找到任何像这样的Posteta行并删除它们。

希望这有意义!提前谢谢。

编辑:

我刚刚找到NOT EXISTS函数。我有一种感觉,像这样的东西会有用:

SELECT m.*
FROM wp_postmeta m
WHERE m.meta_key = \'image\'
AND NOT EXISTS (SELECT *
    FROM wp_posts p
    WHERE m.meta_value = p.ID) 
这看起来对吗?

2 个回复
最合适的回答,由SO网友:James Kemp 整理而成

当然,在发布这篇文章几分钟后,我就把它解决了。以下工作:

SELECT m.*
FROM wp_postmeta m
WHERE m.meta_key = \'image\'
AND NOT EXISTS (SELECT *
    FROM wp_posts p
    WHERE m.meta_value = p.ID) 

SO网友:Jonathan Joosten

从不存在的wp\\U Posteta中选择*(从wp\\U posts p中选择*,其中wp\\U Posteta.post\\u id=p.id),这将查找所有损坏的元数据:

SELECT * FROM wp_postmeta WHERE NOT EXISTS (SELECT * FROM wp_posts p WHERE wp_postmeta.post_id = p.ID)
但您可能会找到一个插件来清理数据库;-)

结束

相关推荐

通过MySQL查询更改媒体附件作者

如何通过sql查询批量更改媒体附件作者?我有数百个媒体附件,需要移动到其他作者,以便删除原始作者;但这位作者没有帖子,只有媒体附件。(导入并运行查询以获取第一张帖子图像并使其成为特色图像时,这些图像属于作者。)我想我需要在查询中指定“post\\u type”,如下所示:update wp_posts and post_type = ‘attachment’Update:如下所述,这是可行的UPDATE wp_posts SET post_author = [NEW_ID] WHERE post_auth