2010-02-10 2 views
0

Есть ли способ удалить все повторяющиеся строки из базы данных MySQL?Удалить повторяющиеся строки из таблицы MySQL

+1

Что вы имеете в виду, говоря " repeat rows ", вы имеете в виду ровно равные строки или дублирующиеся значения столбцов? –

+0

Каждый столбец, за исключением идентификатора – Brian

ответ

1

Пару лет назад кто-то попросил удалить дубликаты. Подзапросы позволяют с помощью запроса, как это в MySQL 4.1:

DELETE FROM some_table WHERE primaryKey NOT IN 
(SELECT MIN(primaryKey) FROM some_table GROUP BY some_column) 

Конечно, вы можете использовать MAX(primaryKey), а если вы хотите сохранить новейшую запись с повторяющимся значением вместо самой старой записи с дубликатом значения ,

Чтобы понять, как это работает, посмотрите на результат этого запроса:

SELECT some_column, MIN(primaryKey) FROM some_table GROUP BY some_column 

Как вы можете видеть, этот запрос возвращает первичный ключ для первой записи, содержащей каждое значение some_column. Логически, тогда любое значение ключа, не найденное в этом результирующем наборе, должно быть дублирующимся, и поэтому оно должно быть удалено.

1

Эти вопросы/ответы могут вас заинтересовать:

И мысль, что часто используется, когда вы работаете с большим столом должен:

  • Создать новую таблицу
  • Вставьте в эту таблицу уникальные записи (т. только одна версия дубликатов в исходной таблице, обычно использует select distinct)
  • и использовать эту новую таблицу в своем приложении; или отбросить старую таблицу и переименовать новую в старое имя.

Хорошая вещь с этим принципом у вас есть возможность проверить, что в новой таблице, прежде чем упасть старый - всегда приятно, чтобы проверить, что такие вещи ^^

Смежные вопросы