Skip to main content
1 of 4
LeonardShelby
  • 165
  • 1
  • 4
  • 13

Delete duplicate record in wp_postmeta

Some of my posts have two values for a meta key called cb_full_width_post. I want to only keep the records that have a meta value of nosidebar-narrow. This means I need to

  1. Identify records in wp_postmeta that have the same post ID and also have an entry for the meta key cb_full_width_post
  2. Delete all records identified in step 1 that do not have meta value of nosidebar-narrow

So far, I have come up with this SQL to identify posts with two or more values for the same meta key 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

This returns a result set of wp_postmeta records having more than one value for cb_full_width_post.
I'm stuck on the next step. I need to use the result set from the above query, which gives me the post IDs that I need to target. I need to find those post IDs in wp_postmeta, and delete all records where meta_value != 'nosidebar-narrow'

LeonardShelby
  • 165
  • 1
  • 4
  • 13