Как удалить дублирующиеся строки в MySQL?

Много искал решения и проводятся разные способы для поиска и удаления дублей в таблице с несколькими условиями.
У меня вот такая таблица:
CREATE TABLE `__fcmupd_tmp_orders` (
  `id` int(20) unsigned NOT NULL AUTO_INCREMENT,
  `object_type` VARCHAR (10) DEFAULT NULL,
  `object_id` int(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

В таблице около 50 тыс записей, и содержится большое кол-во дублей по записям `object_type` & `object_id`.
Все предлагают решение с добавленим индекса для них:
ALTER IGNORE TABLE __fcmupd_tmp_orders ADD UNIQUE KEY(object_type, object_id);

Но такой запрос у меня выдает ошибку "Duplicate entry ... for key 'object_type'"
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 3
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
На 50к записей проблем априори быть не может. Напишите тривиальный скрипт на любом языке который пересоберет эту таблицу так, что бы не было дублей по object_type, object_id.
После этого добавьте уникальный ключ и отправляйтесь вылавливать ошибки в приложении которые обязательно появятся.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
обычно выбираются уникальные в другую таблицу

SELECT DISTINCT
потом индекс, уникальность, и исользуют INSERT IGNORE, чтобы не светилась ошибка при вставки дубля
Ответ написан
Комментировать
@MrKMV34
Превозмогая трудности
Frequently asked SQL Query Interview Questions
Посмотрите 11ый вопрос, может подойдет к вашей ситуации
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы