Дублирующиеся записи в БД

#mysql

#mysql

Вопрос:

У меня огромная таблица продуктов, но в ней много повторяющихся записей. В таблице более 10 тысяч записей, и я хочу удалить дублирующиеся записи в ней, не находя и не удаляя ее вручную. Пожалуйста, дайте мне знать, можете ли вы предоставить мне решение для этого

Комментарии:

1. Дублирующий идентификатор или определенное поле или …?

2. Даже идентификаторы уникальны? Они идентичны во всех отношениях? Как они были сохранены?

Ответ №1:

Вы могли бы использовать SELECT DISTINCT INTO TempTable , удалить исходную таблицу, а затем переименовать временную.

Вам также следует добавить первичный и уникальный ключи, чтобы избежать подобных вещей в будущем.

Ответ №2:

для получения полных дубликатов строк попробуйте это.

 select distinct * into mytable_tmp from mytable
drop table mytable
alter table mytable_tmp rename mytable
  

Ответ №3:

Кажется, приведенные ниже инструкции помогут вам в решении ваших требований.

если таблица (foo) содержит поле первичного ключа

Первый шаг

храните значения ключей во временной таблице, укажите свои уникальные условия в предложении group by, если вы хотите удалить дублирующийся идентификатор электронной почты, укажите идентификатор электронной почты в предложении group by и укажите имя первичного ключа в предложении select, например, min (первичная клавиша) или max (первичная клавиша)

СОЗДАЙТЕ ВРЕМЕННУЮ ТАБЛИЦУ С ВОЗМОЖНОСТЬЮ ВВОДА КАК SELECT min (primarykey ) Из foo GROUP По уникальным полям;

Второй шаг

вызовите приведенную ниже инструкцию delete и укажите имя таблицы и столбцы primarykey

УДАЛИТЬ Из foo, ГДЕ ОТСУТСТВУЕТ первичная клавиша (ВЫБЕРИТЕ * Из temptable);

выполните оба запроса, объединенные в вашем анализаторе запросов или инструменте db.

Если в таблице (foo) не указан первичный ключ

шаг 1

СОЗДАЙТЕ ТАБЛИЦУ temp_table КАК SELECT * ИЗ foo GROUP ПО полю или файлам;

шаг 2

УДАЛИТЬ Из foo;

шаг 3

ВСТАВИТЬ В foo select * из temp_table;

Ответ №4:

Существуют различные решения для удаления повторяющихся строк, и использование одного из них полностью зависит от вашего сценария. Самый простой способ — изменить таблицу, создав уникальный индекс в поле названия продукта:

 alter ignore table products add unique index `unique_index` (product_name);
  

Вы можете удалить индекс после удаления всех дублирующихся строк:

 alter table products drop index `unique_index`;
  

Пожалуйста, дайте мне знать, если это решит проблему. Если нет, я могу предложить вам альтернативные решения для этого.

Ответ №5:

Вы можете добавить более одного столбца в группу с помощью.I.E.

 SELECT * from tableName GROUP BY prod_name HAVING count(prod_name) > 1
  

Это покажет уникальные продукты. Вы можете записать его в новую таблицу и удалить существующую.