Удаление дубликатов строк SQL

Хочу удалить дубликаты строк.
Различается только поле id (автоинкремент).
Пробовал составить несколько разных "NOT IN" и "NOT EXIST" конструкций, но все они выдают ошибку синтаксиса. Видимо хреновый я составитель запросов. Какими запросами для удаления дубликатов вы пользуетесь?
  • Вопрос задан
  • 32939 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
DELETE `t1`.* FROM `table` AS `t1`
    LEFT JOIN (SELECT `id` FROM `table` GROUP BY `field1`, `field2`, ...) AS `t2` 
        ON `t1`.`id` = `t2`.`id`
    WHERE `t2`.`id` IS NULL
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@pihel
Sql, Oracle, pl/sql, BI, ETL, php, olap
DELETE FROM tbl WHERE id NOT IN(
  SELECT MAX(id) FROM tbl GROUP BY <поле 1>[,<поле 2>]
)
Ответ написан
@SashaSkot
Специалист широкого профиля
delete from table where id IN (
select id from (
select field, Count(field) as Count
from table
group by field
having count(field)>1) )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы