Возможный дубликат:
Удалить повторяющиеся строки, оставив самые старые Только ряд?
У меня есть posts_table
в моей БД. В этой таблице posts_table есть поля post_title
, post_id
(и некоторые другие, которые не имеют значения).
Мне нужно удалить одну из строк, если post_title повторяется в другой строке.
Пример:
posts_table
-------------------------------------------
post_id | post_title
-------------------------------------------
501 | Some post title here
502 | Another post title
503 | A test post tile
504 | Some post title here (this is duplicated, i need to delete this row)
505 | A different post title
С помощью приведенного ниже предложения я могу проверить все дублированные post_titles
SELECT post_title, COUNT(post_title) AS dup_count
FROM posts_table
GROUP BY post_title
HAVING (COUNT(post_title) > 1)
Вопрос в том, как я могу удалить все строки с дубликатами post_titles??
Лучший и самый быстрый запрос для этого:
delete from posts_table where post_id in (
select post_id from (
select post_id from posts_table a group by post_title having count(post_title) > 1
) b
)