Question

I've got below SELECT query selecting duplicate posts, my question is how to change that into DELETE?

SELECT a.ID, a.post_title, a.post_type, a.post_status 
FROM wp_posts AS a INNER JOIN (SELECT post_title, MIN( id ) AS min_id 
FROM wp_posts 
WHERE post_type = 'post' 
      AND post_status = 'publish' 
      GROUP BY post_title HAVING COUNT( * ) > 1 ) AS b 
      ON b.post_title = a.post_title 
      AND b.min_id <> a.id 
      AND a.post_type = 'post' 
      AND a.post_status = 'publish';
Was it helpful?

Solution

Take a look at this:

DELETE a FROM
    wp_posts AS a
INNER JOIN (
    SELECT
        post_title, MIN( id ) AS min_id
    FROM
        wp_posts
    WHERE
        post_type = 'post'
        AND post_status = 'publish'
    GROUP BY
        post_title
    HAVING COUNT( * ) > 1 ) AS b
ON
    b.post_title = a.post_title
    AND b.min_id <> a.id
    AND a.post_type = 'post'
    AND a.post_status = 'publish';
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top