Премахване на дублирани редове от MySQL база данни
Не ви ли се е случвало по погрешка да вкарате промишлени количества информация в дадена таблица, измежду която някои полета се дублират? Не, не съм се побъркал и не, не става въпрос за уникални записи в поле. Става въпрос за пълно съвпадение в съдържанието на две полета в два или повече различни записа.
Веднага прилагам прилагам пример. Решаваме(незнайно защо) да си правим база данни със всички квартали и градовете, в които се намират в България. Таблицата ни е с три полета: id, city, residential. Таблицата ни, най-просто може да бъде създадена така:
CREATE TABLE residentials (
id int(10) NOT NULL auto_increment,
city varchar(32),
residential varchar(32),
PRIMARY KEY (id)
);
Очевадно е, че няма как да сложим уникалност на нито едно от двете полета, поради простата причина, че квартали с името “Изток”, “Запад”, “Надежда”… има в почти всеки град. Но е лишено от всякаква логика да имаме два записа:
+----+------------+-------------+ | id | city | residential | +----+------------+-------------+ | 1 | Пазарджик | Запад | | 2 | Пазарджик | Запад | +---+-------------+-------------+
Ясно е, че трябва да се лишим с единия от записите. И ако говорим за сравнително голям обем от информация и респективно сравнително голям брой дублирани записи, то вместо да убиваме отговорника за съдържанието има едно по-интелигентно решение, за което научих от неволята
ALTER IGNORE TABLE residentials ADD UNIQUE INDEX(city,residential);
Това ни лишава от страшно много болежки, псувни, но за жалост не и от живота на отговорника за съдържанието
П.П: Страшно много пъти ми е трябвало такова решение и всеки път го търся като в бездънна яма. Вече си го имам запазено
