如何删除wp_postmeta数据库表中的重复记录?

时间:2017-03-23 作者:LeonardShelby

我的一些帖子对一个名为cb_full_width_post. 我只想保留meta值为的记录nosidebar-narrow. 这意味着我需要

识别wp\\U Posteta中具有相同post ID且具有元键条目的记录cb_full_width_postnosidebar-narrow到目前为止,我已经提出了这个SQL来识别具有两个或多个值的帖子,这些值用于相同的元键cb_full_width_post:

SELECT post_id, meta_key, count(*)
FROM wp_postmeta
WHERE meta_key = \'cb_full_width_post\'
GROUP BY post_id, meta_key
HAVING COUNT(*) > 1
这将返回具有多个值的wp\\u Posteta记录的结果集cb_full_width_post.<我被困在下一步了。我需要使用上面查询的结果集,它为我提供了需要定位的帖子ID。我需要在wp\\U Posteta中找到这些帖子ID,并删除其中的所有记录meta_value != \'nosidebar-narrow\'

编辑:一些视觉信息

Record #1
post_id:     1  
meta_key:    cb_full_width_post   
meta_value:  Good

Record #2
post_id:     1
meta_key:    cb_full_width_post
meta_value:  Bad_if_duplicate

Record #3
post_id:     2
meta_key:    cb_full_width_post
meta_value:  Bad_if_duplicate
我只想删除记录#2,因为它有meta\\u值“Bad\\u if\\u duplicate”,而且它是一个重复的记录(与记录#1相同的post ID)。即使记录#3的meta\\u值为“Bad\\u if\\u duplicate”,我也不想删除它,因为这是它唯一的meta\\u值,即它不是重复的。

1 个回复
SO网友:brianjohnhanna

执行此操作不需要select语句DELETE 语句可以处理查找记录的操作。请确保首先备份数据库,然后尝试以下SQL查询。

DELETE FROM wp_postmeta
WHERE meta_key = \'cb_full_width_post\'
AND meta_value != \'nosidebar-narrow\'