Бих го направил по следния начин:
-
Създайте временна таблица от вашата съществуваща таблица:
CREATE TEMPORARY TABLE data_to_keep LIKE table_with_dupes_in_it
-
Попълнете временната таблица само със записите, които искате:
INSERT INTO data_to_keep SELECT DISTINCT * FROM table_with_dupes_in_it
-
Изпразнете масата
TRUNCATE TABLE table_with_dupes_in_it
-
Върнете данните от временната таблица в оригиналната таблица
INSERT INTO table_with_dupes_in_it SELECT * FROM data_to_keep;
-
Почистете
DROP TEMPORARY TABLE data_to_keep
Имайте предвид, че това може да изяде огромно количество памет и/или място за съхранение, ако въпросната таблица е голяма. Ако това е голяма таблица, бих бил склонен да използвам истинска таблица вместо временна таблица, за да не изяждам прекалено много памет на вашия DB сървър.
РЕДАКТИРАНЕ ЗА ДОБАВЯНЕ:
Ако просто се притеснявате за частични дупки (редове, в които само някои от данните са идентични с въведените преди това данни), тогава ще искате да използвате ГРУПИРАНЕ ПО. Когато използвате GROUP BY, можете да ограничите MySQL да връща само един ред, който съдържа дадени данни, вместо всички.
SELECT *
FROM table
GROUP BY column_name
Също така трябва да обмислите използването на УНИКАЛНИ индекси в колоните, които искате да не съдържат дублирани данни, това ще попречи на потребителите да вмъкват дублирани данни на първо място.