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
20 октября 2011 года
Пока никто не прокомментировал =(. Будьте первым.
Добавить комментарий