MySQL Удаление дубликатов строк в таблице

Категории: Базы данных (mysql)

Для удаления дубликатов записей можно использовать следующие команды:
table_name - заменить на название таблицы
unique_key - заменить на поле в котором, после выполнения запроса, не останется дубликатов.
ID - уникальный ключ в таблице.

DELETE tn FROM table_name tn JOIN (SELECT MAX(ID) AS ID FROM TABLE_NAME GROUP BY unique_key HAVING COUNT(*) > 1) tn2 USING(ID)
*хорошо работает на больших таблицах, проверенно =)

еще вариант:
DELETE table1 FROM table_name as table1,table_name as table2 WHERE table1.unique_key=table2.unique_key AND table1.ID>table2.ID

Удаления полных дубликатов записей через выполнение distinct select
--Создание копии таблицы без дубликатов во временной таблице
CREATE TEMPORARY TABLE bad_temp AS SELECT DISTINCT * FROM table_name;
--Удаление всех записей из старой таблицы
DELETE FROM table_name;
--Добавление записей без дублей
INSERT INTO table_name SELECT * FROM bad_temp;
--Удаление временной таблицы
DROP TABLE bad_temp;

Вариант с созданием временной таблицы:
CREATE TABLE tmpid SELECT MIN(ID) ID FROM table_name GROUP BY unique_key;
DELETE FROM table_name WHERE ID NOT IN (SELECT ID FROM tmpid);

Источник: NilDesign.ru

Ключевые слова: mysql, дубликат записей, удаление строк

Пока никто не прокомментировал =(. Будьте первым.


Добавить комментарий


Share |