#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
Это покажет уникальные продукты. Вы можете записать его в новую таблицу и удалить существующую.