Tags: mysql

Удаление дублирующихся записей mysql

MySQL TipsNTriks - Удаление дублирующихся записей

Интересное и красивое решение проблемы удаления дублирующихся строк в таблицах MySQL
Преамбула

Часто бывает необходимость, удалить лишние дублирующиеся строки в таблице. К примеру есть таблица, состоящая из 6 столбцов.

Id Name Surname Grender Year Active
1 Mik Ivanov Male 1994 True
2 Yulia Romanova Female 1993 True
3 Mik Ivanov Male 1994 True
4 Greed Ivanov Male 1999 True


Ключ поле ID. Как видим, в таблице есть два человека с фамилией Ivanov но с разными Id. Мы точно уверены, что это один и тот же человек, и необходимо удалить одну из этих записей, чтобы не нарушать целостности данных.
Решение

Анализируем дальше. В нашей таблице по мимо Id уникальными данными являются Имя и Фамилия человека. Следовательно можно воспользоваться этой особенностью. Для вашего конкретного случая, необходимо немного подумать и найти ;)
Составной ключ - ключ состоящий из нескольких полей таблицы и являющийся уникальным на протяжении всей таблицы. К чему это я? Собственно в этом и кроеться решение проблемы. Мы создадим составной ключ в нашей таблице, который автоматически уничтожит все повторяющиеся записи в таблице. На ругань MySQL при этом можно не обращать внимания, главное результат. Ниже приведен запрос для исходной таблицы, который удалит дублирующиеся записи.
ALTER IGNORE TABLE Names ADD UNIQUE INDEX(Name,Surname);

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

P.S. Не забудьте снять ключ;)

Найдено тут: http://www.netfaq.ru/mysql/mysql_duplicate_entries

Как в Denwer импортировать через консоль дамп базы mysql.Чтобы не вспоминать

Win+R, cmd, Enter

p:

cd P:\usr\local\mysql5\bin\

mysql_run_to_import_dumps.exe

mysql> \r base_name

mysql> \. dump_file


где p - виртуальный диск, создаваемый денвером
base_name - имя базы
dump_file - файл с дампом базы (включая путь)