SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.01.2011 00:42:06

began
Участник
Зарегистрирован: 28.01.2011
Сообщений: 22

Запрос в базу MySQL на удаление повторяющихся строк

База MySQL

Есть таблица, в ней более 100000 строк и много повторяющихся.
как сделать запрос в базу на удаление повторяющихся строк ?

если можно? ответ с конкретным примером так как я в MySQL не разбираюсь.

Спасибо

Неактивен

 

#2 28.01.2011 02:04:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запрос в базу MySQL на удаление повторяющихся строк

Нужно:
1. Определиться для себя, какие две строки являются повторяющимися
(конкретно — набор полей, который должен быть уникальным).
2. Сделать резервную копию таблички (на всякий случай).
3. Добавить уникальный индекс на табличку:
ALTER IGNORE TABLE tablename ADD UNIQUE (список полей п.1 через запятую);

Если третий пункт не заработает (ALTER IGNORE — штука с характером),
нужно:
1. Создать таблицу с той же структурой, но пустую:
CREATE TABLE tablename_new LIKE tablename;
2. Добавить уникальный индекс (п.3 предыдущего параграфа);
3. Скопировать туда данные, игнорируя дубликаты:
INSERT IGNORE INTO tablename_new SELECT * FROM tablename;
4. Переименовать таблички назад:
RENAME TABLE tablename TO tablename_old, tablename_new TO tablename;
5. Удалить старую таблицу:
DROP TABLE tablename_old;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson