gpt4 book ai didi

mysql - 如何在另一个表中缺少值后清理表?

转载 作者:行者123 更新时间:2023-11-30 23:51:41 24 4
gpt4 key购买 nike

我尝试将 bbPress 1.0 安装迁移到我的 WordPress 上新的 bbPress 2.0 插件时没有成功,这让我的 wp_posts 表变得一团糟。

我通过删除所有携带值 topicreplypost_type 列的帖子来解决这个问题,这很好。

但现在我注意到 wp_postmeta 似乎受到许多引用我已删除帖子的条目的影响。两个表都有 post_id 列。

问题是:我使用哪个 SQL 命令删除 wp_postmeta 上不再存在于 wp_posts 上的引用行的值?我知道这是我应该使用的某种联接,但我不知道查找不存在的内容并将其删除会怎样。

PS:WordPress 表不保持参照完整性是怎么回事?我很确定在删除 wp_posts 上的相关内容时,可以从 wp_postmeta 中自动删除一些内容。好吧……

最佳答案

从表 a 中手动删除在表 b 中没有匹配的行的一般方法是:

DELETE FROM table_a WHERE some_id NOT IN (SELECT some_id FROM table_b);

这可能不是进行批量删除的最有效方法(连接可能会更快),但在这种情况下我通常更喜欢子选择,它更容易理解,因此降低了 FUBAR 概率(你不' 想不小心删除 table_b 等中的行)

所以在你的情况下你可能会做这样的事情:

SELECT * FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);

如果您确定这些是您要删除的行,请将 SELECT * 替换为 DELETE:

DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);

关于mysql - 如何在另一个表中缺少值后清理表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com