 |
[:NetFAQ://] |
 |
 |
[:NetFAQ://] |
 |
 |
[:NetFAQ://] |
 |
 |
[:NetFAQ://] |
 |
|
 |
MySQL TipsNTriks (Удаление дублирующихся записей)
|
 |
|
MySQL TipsNTriks - Удаление дублирующихся записей
Интересное и красивое решение проблемы удаления дублирующихся строк в таблицах MySQL
Преамбула
Часто бывает необходимость, удалить лишние дублирующиеся строки в таблице. К примеру есть таблица, состоящая из 6 столбцов.
| Id | Name | Surname | Grender | Year | Active |
| 1 | Mik | Ivanov | Male | 1994 | True |
| 2 | Yulia | Romanova | Female | 1993 | True |
| 3 | Mik | Ivanov | Male | 1994 | True |
| 4 | Greed | Ivanov | Male | 1999 | True |
Ключ поле ID. Как видим, в таблице есть два человека с фамилией Ivanov но с разными Id. Мы точно уверены, что это один и тот же человек, и необходимо удалить одну из этих записей, чтобы не нарушать целостности данных.
Решение
Анализируем дальше. В нашей таблице по мимо Id уникальными данными являются Имя и Фамилия человека. Следовательно можно воспользоваться этой особенностью. Для вашего конкретного случая, необходимо немного подумать и найти ;)
Составной ключ - ключ состоящий из нескольких полей таблицы и являющийся уникальным на протяжении всей таблицы. К чему это я? Собственно в этом и кроеться решение проблемы. Мы создадим составной ключ в нашей таблице, который автоматически уничтожит все повторяющиеся записи в таблице. На ругань MySQL при этом можно не обращать внимания, главное результат. Ниже приведен запрос для исходной таблицы, который удалит дублирующиеся записи.
ALTER IGNORE TABLE Names ADD UNIQUE INDEX(Name,Surname);
В результате мы получаем таблицу, в которой заведомо отсутствуют поля с повторяющимися именем и фамилией.
P.S. Не забудьте снять ключ;)
Опубликовано: 2008-02-21 19:49:23 ShadX
Комментарии
| MUZ |
СПАСИБО.БЫСТРО ЛЕГКО И ПРОСТО!
|
|
| самбади |
спасибо, помогло :)
|
|
| Егор |
Спасибо огромное, респект автору =)
|
|
| Павел |
А в MSSQL по такому принципу не выходит.
|
|
| RavenLynx |
правда очень простой и удобный способ.
и как я сам не догадался))))
большое спасибо автору
|
|
|
Оставить комментарий:
|
|
|
 |
[:NetFAQ://] |
 |
|
 |
[:NetFAQ://] |
 |
 |
[:NetFAQ://] |
 |
 |
[:NetFAQ://] |
 |
 |
[:NetFAQ://] |
 |
|