【发布时间】:2012-12-27 08:36:13
【问题描述】:
导入错误后,我的帖子中有很多重复的内容。
然后,我尝试使用该查询删除此帖子:
DELETE
FROM wp_posts USING wp_posts
LEFT JOIN wp_postmeta pm ON wp_posts.ID = pm.post_id
AND pm.meta_key="_wpbdp[fields][6]"
LEFT JOIN wp_wpbdp_listing_fees wlf ON wp_posts.ID = wlf.listing_id
WHERE wp_posts.post_type="wpbdp_listing"
AND wp_posts.post_status="publish"
AND EXISTS (
SELECT NULL
FROM wp_posts p2
LEFT JOIN wp_postmeta pm2 ON p2.ID = pm2.post_id
AND pm2.meta_key="_wpbdp[fields][6]"
LEFT JOIN wp_wpbdp_listing_fees wlf2 ON p2.ID = wlf2.listing_id
WHERE p2.post_type="wpbdp_listing"
AND pm2.meta_value=pm.meta_value
AND p2.post_status="publish"
AND wlf2.category_id=wlf.category_id
)
不幸的是,我不能执行SELECT 语句来调用我要删除的同一个表。
还有其他解决方案吗?
【问题讨论】:
-
你有什么ID之类的吗?如果是这样,请选择获取重复的 ID,将其存储在一个数组中,然后再次尝试删除这些 ID。或者:你如何确定一行是“重复的”?一个“唯一”键可能会很好地解决您的问题。
-
我认为您需要编写一个脚本并运行多个查询来清理您的数据库。
-
是的,我可以按 ID 排序,但没有重复的 ID。发现重复内容的唯一方法是检查
wp_postmeta如果帖子具有相同的城市 (_wpbdp[fields][6]) 和相同的类别 (wp_wpbdp_listing_fees.category_id)。然后,我检查了你的链接@ATaylor,我不知道如何继续......你能帮我吗? ^^ -
我没有发布任何链接,真的。那是“尼克”。无论如何,如何运行(伪代码):
ALTER IGNORE TABLE ADD UNIQUE (city, category);这将为您的表添加一个“唯一索引”(请查看文档中的Alter Table以获取确切的查询并删除所有重复项。